Как перезапустить файл pkg sqllocaldb
Перейти к содержимому

Как перезапустить файл pkg sqllocaldb

  • автор:

SQL Server Express LocalDB

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

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

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

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

  • SQL Server Express 2022
  • SQL Server Express 2019
  • SQL Server Express 2017
  • SQL Server Express 2016

Клиенты Visual Studio 2019 и 2022 должны установить SQL Server Express 2019.

Установщик SqlLocalDB.msi LocalDB доступен на установочном носителе для всех выпусков, кроме Express Core. Он находится в папке \_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 на странице Выбор компонентов или «Общие компоненты» во время установки. Для каждой основной версии SQL Server ядро СУБД может быть только одна установка двоичных файлов LocalDB. Можно запустить несколько ядро СУБД процессов и использовать одни и те же двоичные файлы. Экземпляр SQL Server ядро СУБД запущен, так как LocalDB имеет те же ограничения, что и SQL Server Express.

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

Description

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

Дополнительные сведения об 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 не может быть подписчиком слияния реплика tion.
  • 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 (12.x). Ранее именем экземпляра был один символ v, за которым следует LocalDB и номер версии. Начиная с SQL Server 2014 (12.x), этот формат имени экземпляра больше не поддерживается, а вместо него следует использовать строка подключения упоминание ранее.

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

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

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

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

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

Категория Значение
Имя. LocalDBApp1
Версия
Общее имя «»
Ответственный «»
Автоматическое создание No
State Running
Время последнего запуска
Имя канала экземпляра np:\\.\pipe\LOCALDB#F365A78E\tsql\query

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

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

Чтобы подключиться к общему экземпляру LocalDB, добавьте \.\ (backslash + dot+ backslash) в строка подключения, чтобы ссылаться на пространство имен, зарезервированное для общих экземпляров. Например, чтобы подключиться к общему экземпляру 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, не учитывая принадлежности к группе локальных администраторов.

Связанный контент

LocalDB: How do you delete it?

Setup: Entity framework code first to new database. Scenario: I’m playing around with EF and I add a bunch of elements to my database. I then change the entity model, and while I know that I could do migrations, I just want to start from scratch and basically wipe the database from the earth. The database used by default was (localdb)\v11.0. My question is: Can I go somewhere and just delete a file, or start some kind of manager to delete that database and start from scratch?

How to programmatically find out where LocalDb is installed

I’m writing a plugin for Cake Build tool where I need to start a LocalDB instance. But this code will be executed on different machines and LocalDB can be installed in different folders depending on the version of SQL Server installed in the build machine. I know at least 3 paths possible:

c:\Program Files\Microsoft SQL Server\130\Tools\Binn\SqlLocalDB.exe C:\Program Files\Microsoft SQL Server\120\Tools\Binn\SqlLocalDB.exe C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SqlLocalDB.exe 

Though I’m not absolutely sure about the last path. And I can’t install SQL Server 2016 on my machine, so can’t confirm if

c:\Program Files\Microsoft SQL Server\140\Tools\Binn\SqlLocalDB.exe 

would the correct guess. I can iterate through a list of options and pick the one that works. Are there any other possible folder where SqlLocalDb.exe can be installed? Or is there a registry value somewhere that I can check?

asked Oct 20, 2016 at 14:17
234 1 1 gold badge 4 4 silver badges 14 14 bronze badges

2 Answers 2

There seems to be two Registry paths that contain the installation directory / folder:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions The Installed Versions Key has sub-Keys for the SQL Server version in the form of 11.0, 12.0, and so on. Each version number Key has an InstanceAPIPath Value of type «REG_SZ» which contains Data such as: C:\Program Files\Microsoft SQL Server\120\LocalDB\Binn\SqlUserInstance.dll
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server The Microsoft SQL Server Key has sub-Keys for the LocalDB instances in the form of MSSQL11E.LOCALDB, MSSQL12E.LOCALDB, and so on. Each instance Key has a sub-Key for Setup, which in turn has a SQLBinRoot Value of type «REG_SZ» which contains Data such as: C:\Program Files\Microsoft SQL Server\120\LocalDB\Binn\

P.S. If you have a folder for 130 then you do have SQL Server 2016 (or some component of it) installed since that is the version number for SQL Server 2016. 110 is for SQL Server 2012, 120 is for SQL Server 2014, and I don’t believe a value of 140 currently exists (which, of course, would certainly make it very hard to confirm ;-).

Regarding Ramveer’s answer: While it is true that you can have Registry entries for applications that are no longer installed, starting with the Registry is still more reliable than executing SqlLocalDB.exe as the containing folder is not required to be in the PATH environment variable in order to work, but the registry entries most likely are required (i.e. you aren’t going to have LocalDB installed and not have the Registry entries). But yes, it is still a good idea to test each reported installation folder to make sure that it is still there. You can do this in DOS / cmd script by running:

reg query "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server Local DB" 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions\11.0 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions\12.0 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions\13.0 

You can use the DOS FOR command to iterate over that output, capturing the version number (just the integer portion of 11 , 12 , etc and not the decimal portion of .0 that follows). Then, for each version number, check its registry Key to get the install folder (just replace the «12» in the path below with the extracted version number):

reg query "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12E.LOCALDB\Setup" /v "SQLBinRoot" 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12E.LOCALDB\Setup SQLBinRoot REG_SZ C:\Program Files\Microsoft SQL Server\120\LocalDB\Binn\ 

You can again use the DOS FOR command to capture that output and extract the path. Then, you can check for its existence and if it can actually run by doing the following:

REM You wouldn't need the following SET if extracting with the FOR command SET CheckPath="C:\Program Files\Microsoft SQL Server\120\LocalDB\Binn\sqlservr.exe" IF EXIST %CheckPath% ( %CheckPath% -v ) ELSE ( ECHO Not really here ) 

Saved searches

Use saved searches to filter your results more quickly

Cancel Create saved search

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

jbogard / Respawn Public

Intelligent database cleaner for integration tests

License

jbogard/Respawn

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Go to file

Folders and files

Last commit message
Last commit date

Latest commit

History

View all files

Repository files navigation

Respawn is a small utility to help in resetting test databases to a clean state. Instead of deleting data at the end of a test or rolling back a transaction, Respawn resets the database back to a clean, empty state by intelligently deleting data from tables.

To use, create a Respawner and initialize with tables you want to skip, or schemas you want to keep/ignore:

var respawner = await Respawner.CreateAsync(connection, new RespawnerOptions  TablesToIgnore = new Table[]  "sysdiagrams", "tblUser", "tblObjectType", new Table("MyOtherSchema", "MyOtherTable") >, SchemasToExclude = new []  "RoundhousE" > >);

Or if you want to use a different database:

var respawner = await Respawner.CreateAsync(connection, new RespawnerOptions  SchemasToInclude = new []  "public" >, DbAdapter = DbAdapter.Postgres >);

In your tests, in the fixture setup, reset to a clean state:

await respawner.ResetAsync("MyConnectionStringName");

or if you’re using a database besides SQL Server, pass an open DbConnection :

using (var conn = new NpgsqlConnection("ConnectionString"))  await conn.OpenAsync(); await respawner.ResetAsync(conn); >

How does it work?

Respawn examines the SQL metadata intelligently to build a deterministic order of tables to delete based on foreign key relationships between tables. It navigates these relationships to build a DELETE script starting with the tables with no relationships and moving inwards until all tables are accounted for.

Once this in-order list of tables is created in the CreateAsync factory, the Respawner object keeps this list of tables privately so that the list of tables and the order is only calculated once.

In your tests, you Reset your database before each test run. If there are any tables/schemas that you don’t want to be cleared out, include these in the configuration of your RespawnerOptions.

In benchmarks, a deterministic deletion of tables is faster than truncation, since truncation requires disabling or deleting foreign key constraints. Deletion results in easier test debugging/maintenance, as transaction rollbacks/post-test deletion still rely on that mechanism at the beginning of each test. If data comes in from another source, your test might fail. Respawning to a clean state assures you have a known starting point before each test.

Install-Package Respawn 

Or via the .NET Core CLI:

dotnet add package Respawn 

This command from Package Manager Console will download and install Respawn.

To install and run local dependencies needed for tests, (PostgreSQL and MySQL) install Docker for Windows and from the command line at the solution root run:

docker-compose up -d 

This will pull down the latest container images and run them. You can then run the local build/tests.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *