SQL Server Express LocalDB

Область применения: SQL Server (все поддерживаемые версии)

LocalDB в Microsoft SQL Server Express — это компонент SQL Server Express, ориентированный на разработчиков. Он доступен в SQL Server Express с дополнительными службами.

При установке LocalDB выполняется копирование минимального набора файлов, необходимых для запуска компонента Компонент SQL Server Database Engine. После установки LocalDB вы можете установить соединение с помощью специальной строки подключения. При соединении необходимая инфраструктура SQL Server создается и запускается автоматически, что позволяет приложению использовать базу данных без выполнения сложной настройки. Средства разработчика позволяют использовать ядро СУБД SQL Server для создания и проверки кода Transact-SQL без обязательств по управлению полноценным экземпляром сервера SQL Server.

Установочный носитель

LocalDB — это компонент, выбираемый во время установки SQL Server Express и доступный при загрузке с носителя. Если вы скачиваете носитель, выберите Express Advanced или пакет LocalDB .

Пользователям Visual Studio 2019 и 2022 следует установить SQL Server Express 2019.

Установщик SqlLocalDB.msi LocalDB доступен на установочном носителе для всех выпусков, кроме Express Core. Он находится в папке <installation_media_root>\<LCID>_ENU_LP\x64\Setup\x64. LCID — это идентификатор языкового стандарта или код языка. Например, LCID = 1033 означает языковой стандарт en-US (английский, США).

Кроме того, LocalDB можно установить с помощью Visual Studio Installer в составе рабочей нагрузки Хранение и обработка данных, рабочей нагрузки ASP.NET и веб-разработка или как отдельный компонент.

Установка LocalDB

Для установки LocalDB используйте мастер установки или программу SqlLocalDB.msi. LocalDB подходит при установке SQL Server Express LocalDB.

Выберите LocalDB на странице Выбор компонентов или "Общие компоненты" во время установки. Двоичные файлы LocalDB можно устанавливать лишь по одному разу для каждой основной версии Компонент SQL Server Database Engine. Можно запускать несколько процессов Компонент Database Engine , которые будут использовать одни и те же двоичные файлы. Экземпляр Компонент SQL Server Database Engine, запущенный как LocalDB, имеет те же ограничения, что и SQL Server Express.

Управление экземпляром SQL Server Express LocalDB осуществляется с помощью служебной программы SqlLocalDB.exe. SQL Server Express LocalDB следует использовать вместо устаревшей функции пользовательского экземпляра SQL Server Express.

Описание

Программа установки LocalDB использует программу SqlLocalDB.msi для установки необходимых файлов на компьютере. После установки LocalDB становится экземпляром SQL Server Express, который способен создавать и открывать базы данных SQL Server. Файлы системной базы данных, как правило, хранятся в каталоге AppData, который обычно скрыт. Например, C:\Users\<user>\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\LocalDBApp1\. Файлы пользовательской базы данных хранятся в месте, указанном пользователем, как правило, в папке C:\Users\<user>\Documents\.

Дополнительные сведения о включении LocalDB в приложении см. в статье с общими сведениями о локальных данных в Visual Studio и статье о создании базы данных и добавлении таблиц в Visual Studio.

Дополнительные сведения об API LocalDB см. в разделе Справочник по SQL Server Express LocalDB.

Служебная программа SqlLocalDB позволяет создавать новые экземпляры LocalDB, запускать и останавливать работу экземпляров, а также использовать функции для управления LocalDB. Дополнительные сведения о служебной программе SqlLocalDB см. в разделе Программа SqlLocalDB.

Параметры сортировки экземпляра для LocalDB заданы как SQL_Latin1_General_CP1_CI_AS и не могут быть изменены. Параметры сортировки на уровне базы данных, на уровне столбца и на уровне выражения поддерживаются обычным образом. Автономные базы данных следуют правилам метаданных и параметрам сортировки tempdb, определенным Contained Database Collations.

Ограничения

  • LocalDB нельзя управлять удаленно с помощью SQL Server Management Studio.

  • LocalDB не может быть подписчиком репликации слиянием.

  • LocalDB не поддерживает FILESTREAM.

  • Для LocalDB разрешены только локальные очереди компонента Service Broker.

  • Экземпляр LocalDB, принадлежащий встроенным учетным записям, таким как NT AUTHORITY\SYSTEM, может иметь проблемы с управлением из-за перенаправления файловой системы Windows. Вместо этого используйте в качестве владельца обычную учетную запись Windows.

Автоматические и именованные экземпляры

LocalDB поддерживает два типа экземпляров: автоматические и именованные.

  • Автоматические экземпляры LocalDB являются общедоступными. Они создаются и обслуживаются автоматически и могут использоваться любым приложением. Для каждой версии LocalDB, установленной на компьютере пользователя, существует один автоматический экземпляр LocalDB. Автоматические экземпляры LocalDB обеспечивают удобное управление экземплярами. Нет необходимости создавать экземпляр. Он просто работает. Эта функция упрощает установку приложения и его перенос на другой компьютер. Если на целевом компьютере установлена указанная версия LocalDB, то там также будет доступен автоматический экземпляр LocalDB для этой версии. Автоматические экземпляры LocalDB именуются по специальному шаблону, принадлежащему зарезервированному пространству имен. Автоматические экземпляры предотвращают конфликты имен с именованными экземплярами LocalDB. Имя автоматического экземпляра — MSSQLLocalDB.

  • Именованные экземпляры LocalDB являются закрытыми. Они принадлежат одному приложению, которое отвечает за создание экземпляра и управление им. Именованные экземпляры обеспечивают изоляцию от других экземпляров и способствуют повышению производительности за счет снижения уровня конфликта за ресурсы с другими пользователями базы данных. Пользователь должен создавать именованные экземпляры явным образом с помощью API управления LocalDB или неявным образом через файл app.config управляемого приложения (при необходимости управляемое приложение также может использовать API). Каждый именованный экземпляр LocalDB имеет связанную с ним версию LocalDB, которая указывает на соответствующий набор двоичных файлов LocalDB. Имя экземпляра LocalDB имеет тип данных sysname и может содержать до 128 символов. (Это имя экземпляра отличается от обычных именованных экземпляров SQL Server, что ограничивает имена обычными netBIOS-именами из 15 символов ASCII.) Имя экземпляра LocalDB может содержать любые символы Юникода, которые являются допустимыми в имени файла. Именованный экземпляр, в котором используется имя автоматического экземпляра, становится автоматическим экземпляром.

Разные пользователи одного и того же компьютера могут иметь экземпляры с одинаковыми именами. Каждый экземпляр является отдельным процессом, который запускается от разных пользователей.

Общие экземпляры LocalDB

В LocalDB поддерживается общий доступ к экземплярам, если нескольким пользователям компьютера требуется доступ к одному экземпляру LocalDB. Владелец экземпляра может разрешить другим пользователям компьютера подключаться к своему экземпляру. Общими могут быть как автоматические, так и именованные экземпляры LocalDB. Для организации общего доступа к экземпляру LocalDB пользователь должен указать его общее имя (псевдоним). Поскольку общее имя видно всем пользователям компьютера, то оно должно быть уникальным на этом компьютере. Общее имя экземпляра LocalDB имеет тот же формат, что и именованный экземпляр LocalDB.

Только администратор компьютера может создавать общие экземпляры LocalDB. Администратор или владелец общего экземпляра LocalDB может отменить общий доступ к экземпляру LocalDB. Предоставление и отмена общего доступа к экземпляру LocalDB выполняется с помощью методов LocalDBShareInstance и LocalDBUnShareInstance API LocalDB либо с помощью соответствующих параметров служебной программы SqlLocalDB.

Запуск LocalDB и подключение к LocalDB

Подключение к автоматическому экземпляру

Самым простым способом использования LocalDB является подключение к автоматическому экземпляру, владельцем которого является текущий пользователь, с использованием строки подключения Server=(localdb)\MSSQLLocalDB;Integrated Security=true. Для подключения к определенной базе данных. используя имя файла, подключитесь с помощью строки подключения, аналогичной Server=(LocalDB)\MSSQLLocalDB;Integrated Security=true;AttachDbFileName=D:\Data\MyDB1.mdf.

Соглашение об именовании и строка подключения для формата LocalDB изменились в SQL Server 2014. Ранее именем экземпляра был один символ v, за которым следует LocalDB и номер версии. Начиная с SQL Server 2014, этот формат имени экземпляра больше не поддерживается. Вместо него следует использовать строку подключения, упомянутую ранее.

Примечание

При первом подключении пользователя компьютера к LocalDB необходимо создать и запустить автоматический экземпляр. Дополнительное время, необходимое для создания экземпляра, может стать причиной того, что попытка соединения завершится с ошибкой истечения времени ожидания. В этом случае подождите несколько секунд до завершения процесса создания экземпляра, а затем подключитесь снова.

Создание именованного экземпляра и подключение к нему

Помимо автоматических экземпляров, LocalDB также поддерживает именованные экземпляры. Используйте программу SqlLocalDB.exe для создания, запуска и остановки именованного экземпляра LocalDB. Дополнительные сведения об SqlLocalDB.exe см. в разделе Программа SqlLocalDB.

REM Create an instance of LocalDB
"C:\Program Files\Microsoft SQL Server\150\Tools\Binn\SqlLocalDB.exe" create LocalDBApp1
REM Start the instance of LocalDB
"C:\Program Files\Microsoft SQL Server\150\Tools\Binn\SqlLocalDB.exe" start LocalDBApp1
REM Gather information about the instance of LocalDB
"C:\Program Files\Microsoft SQL Server\150\Tools\Binn\SqlLocalDB.exe" info LocalDBApp1

Вышеуказанная последняя строка возвращает информацию, аналогичную следующей.

Категория Значение
Имя LocalDBApp1
Версия <Текущая версия>
Общее имя ""
Владелец <пользователь Windows>
Автоматическое создание Нет
Состояние запуск
Время последнего запуска <Дата и время>
Имя канала экземпляра np:\\.\pipe\LOCALDB#F365A78E\tsql\query

Примечание

Если приложение использует версию .NET, предшествующую 4.0.2, необходимо устанавливать подключение непосредственно с именованным каналом LocalDB. Значение "Имя канала экземпляра" — это именованный канал, который прослушивает экземпляр LocalDB. Часть имени канала экземпляра, следующая после LOCALDB#, будет изменяться при каждом запуске экземпляра LocalDB. Для подключения к экземпляру LocalDB с помощью SQL Server Management Studio введите имя канала экземпляра в поле Имя сервера диалогового окна Соединение с Компонент Database Engine . Можно установить соединение с экземпляром LocalDB из пользовательской программы с использованием строки подключения, аналогичной SqlConnection conn = new SqlConnection(@"Server=np:\\.\pipe\LOCALDB#F365A78E\tsql\query");.

Подключение к общему экземпляру LocalDB

Чтобы подключиться к общему экземпляру LocalDB, добавьте \.\ (обратная косая черта + точка + обратная косая черта) в строку подключения для ссылки на пространство имен, зарезервированное для общих экземпляров. Например, чтобы подключиться к общему экземпляру LocalDB с именем AppData, укажите (localdb)\.\AppData в строке подключения. Пользователь, подключающийся к общему экземпляру LocalDB, которому он не владеет, должен иметь имя входа для проверки подлинности Windows или SQL Server аутентификации.

Диагностика

Способы устранения неполадок в работе LocalDB см. в статье Troubleshoot SQL Server 2012 Express LocalDB (Устранение неполадок в работе SQL Server 2012 Express LocalDB).

Разрешения

SQL Server Express LocalDB — это экземпляр, созданный пользователем для самостоятельного использования. Любой пользователь компьютера может создать базу данных с помощью экземпляра LocalDB, сохранив файлы в своем пользовательском профиле и запустив процесс со своими учетными данными. По умолчанию доступ к экземпляру LocalDB имеет только его владелец. Данные, содержащиеся в LocalDB, защищены средствами файловой системы. Если файлы пользовательской базы данных хранятся в общей папке, то базу данных может открыть любой пользователь, имеющий доступ к этой папке, с помощью собственного экземпляра LocalDB. Если файлы базы данных хранятся в защищенном месте, например в папке пользовательских данных, то базу данных может открыть только сам пользователь, а также администратор, обладающий правами доступа к данной папке. Файлы LocalDB могут быть одновременно открыты только одним экземпляром LocalDB.

Примечание

LocalDB всегда запускается в контексте безопасности пользователя. Это означает, что LocalDB никогда не будет запускаться с учетными данными группы локальных администраторов. То есть доступ ко всем файлам базы данных, используемыми экземпляром LocalDB, возможен по учетной записи их владельца-пользователя Windows, не учитывая принадлежности к группе локальных администраторов.

См. также раздел