Как определить имя экземпляра LocalDb в SQL-скрипте?


Для нелокального SQL-сервера я могу SELECT SERVERPROPERTY('ServerName') получить имя сервера и экземпляр, на котором я работаю. Для сервера LocalDb, однако, я получаю SERVERNAMELOCALDB#SOMEHASH. Как я могу получить имя локального экземпляра?

Решение:

Решение для получения экземпляра, работающего как на LocalDB, так и на" обычных " экземплярах SQL Server:

DECLARE @serverName NVARCHAR(151)
IF SERVERPROPERTY('IsLocalDb') = 1
    SELECT @serverName = 'np:\.pipe' + CONVERT(NVARCHAR(128), SERVERPROPERTY('InstanceName')) + 'tsqlquery'
ELSE
    SELECT @serverName = CONVERT(NVARCHAR(128), SERVERPROPERTY('ServerName'))

Некоторые предпосылки, которые я должен был упомянуть в исходном вопросе: у нас есть база данных конфигурации для нашего приложения. Среди прочего вещи, он хранит строки соединения. Для машин разработчиков и интеграционных тестов мы хотим иметь возможность генерировать базу данных с помощью скрипта и иметь строку подключения, ссылающуюся на локальный экземпляр. Таким образом, мне нужна рабочая строка соединения (которой LOCALDB#SOMEHASH нет). Так как существует некоторое распространение в версии сервера баз данных, мне нужно было что-то, что могло бы справиться с обоими случаями.

1 6

1 ответ:

Это:

SELECT SERVERPROPERTY ('InstanceName')

EDIT

Из Ссылка

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

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

И

Если приложение использует версию .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");