Как я могу получить сервер SQL Server и имя экземпляра текущего соединения с помощью сценария T-SQL?
sql
sql-server
tsql
sql-server-2008r2-express
Гильермо Гутьеррес
источник
источник
SELECT @@SERVERNAME
дает результат, необходимый для подключения с помощьюsqlcmd -S
. Если это экземпляр MSSQLSERVER по умолчанию, то его нельзя указывать в параметре -S. Это версия для разработчиков 14.0.2002.14 2017, 64-разрядная версия.Ответы:
Только что нашел ответ в этом SO-вопросе (буквально, внутри вопроса, а не ответа):
SELECT @@servername
возвращает имя сервера \ экземпляр, если это не экземпляр по умолчанию
SELECT @@servicename
возвращает имя экземпляра, даже если это значение по умолчанию (MSSQLSERVER)
источник
Как насчет этого:
EXECUTE xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key='SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQl', @value_name='MSSQLSERVER'
Это также получит имя экземпляра.
null
означает экземпляр по умолчанию:SELECT SERVERPROPERTY ('InstanceName')
http://technet.microsoft.com/en-us/library/ms174396.aspx
источник
SELECT @@servername
предоставит вам данные какserver/instanceName
Чтобы получить только те,
instanceName
вам нужно выполнитьselect @@ServiceName
запрос.источник
Я нашел это:
EXECUTE xp_regread @rootkey = 'HKEY_LOCAL_MACHINE', @key = 'SOFTWARE\Microsoft\Microsoft SQL Server', @value_name = 'InstalledInstances'
Это даст вам список всех экземпляров, установленных на вашем сервере.
И пример Microsoft для текущего сервера:
SELECT CONVERT(sysname, SERVERPROPERTY('servername'));
источник
Зачем останавливаться только на имени экземпляра? Вы можете провести инвентаризацию своей среды SQL Server следующим образом:
SELECT SERVERPROPERTY('ServerName') AS ServerName, SERVERPROPERTY('MachineName') AS MachineName, CASE WHEN SERVERPROPERTY('InstanceName') IS NULL THEN '' ELSE SERVERPROPERTY('InstanceName') END AS InstanceName, '' as Port, --need to update to strip from Servername. Note: Assumes Registered Server is named with Port SUBSTRING ( (SELECT @@VERSION),1, CHARINDEX('-',(SELECT @@VERSION))-1 ) as ProductName, SERVERPROPERTY('ProductVersion') AS ProductVersion, SERVERPROPERTY('ProductLevel') AS ProductLevel, SERVERPROPERTY('ProductMajorVersion') AS ProductMajorVersion, SERVERPROPERTY('ProductMinorVersion') AS ProductMinorVersion, SERVERPROPERTY('ProductBuild') AS ProductBuild, SERVERPROPERTY('Edition') AS Edition, CASE SERVERPROPERTY('EngineEdition') WHEN 1 THEN 'PERSONAL' WHEN 2 THEN 'STANDARD' WHEN 3 THEN 'ENTERPRISE' WHEN 4 THEN 'EXPRESS' WHEN 5 THEN 'SQL DATABASE' WHEN 6 THEN 'SQL DATAWAREHOUSE' END AS EngineEdition, CASE SERVERPROPERTY('IsHadrEnabled') WHEN 0 THEN 'The Always On Availability Groups feature is disabled' WHEN 1 THEN 'The Always On Availability Groups feature is enabled' ELSE 'Not applicable' END AS HadrEnabled, CASE SERVERPROPERTY('HadrManagerStatus') WHEN 0 THEN 'Not started, pending communication' WHEN 1 THEN 'Started and running' WHEN 2 THEN 'Not started and failed' ELSE 'Not applicable' END AS HadrManagerStatus, CASE SERVERPROPERTY('IsSingleUser') WHEN 0 THEN 'No' ELSE 'Yes' END AS InSingleUserMode, CASE SERVERPROPERTY('IsClustered') WHEN 1 THEN 'Clustered' WHEN 0 THEN 'Not Clustered' ELSE 'Not applicable' END AS IsClustered, '' as ServerEnvironment, '' as ServerStatus, '' as Comments
источник
Чтобы получить список серверов и экземпляров, к которым вы подключены:
select * from Sys.Servers
Чтобы получить список баз данных, которые есть на подключенном сервере:
SELECT * from sys.databases;
источник
Просто чтобы добавить некоторые пояснения к запросам реестра. Они перечисляют только экземпляры совпадающей разрядности (32 или 64) для текущего экземпляра.
Фактический ключ реестра для 32-битных экземпляров SQL в 64-битной ОС:
Вы можете запросить это в 64-битном экземпляре, чтобы получить все 32-битные экземпляры. 32-разрядный экземпляр, похоже, ограничен Wow6432Node, поэтому не может читать 64-разрядное дерево реестра.
источник
Другой способ найти имя экземпляра - щелкните правой кнопкой мыши имя базы данных и выберите «Свойства», в этой части вы можете увидеть свойства соединения в левом нижнем углу, щелкните по нему, затем вы увидите имя экземпляра.
источник