Как получить имя текущего экземпляра из T-SQL
Как я могу получить сервер SQL Server и имя экземпляра текущего соединения, используя сценарий T-SQL?
6 ответов:
только что нашел ответ, в это так вопрос (буквально, внутри вопроса, а не ответа):
SELECT @@servername
возвращает имя_сервера\instance, поскольку это не экземпляр по умолчанию
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')
SELECT @@servername
даст вам данные какserver/instanceName
до
instanceName
вы должны запуститьselect @@ServiceName
запрос .
Я нашел вот это:
EXECUTE xp_regread @rootkey = 'HKEY_LOCAL_MACHINE', @key = 'SOFTWARE\Microsoft\Microsoft SQL Server', @value_name = 'InstalledInstances'
это даст вам список всех экземпляров, установленных на вашем сервере.
The
ServerName
свойства и@@SERVERNAME
возвратить аналогичную информацию. ЭлементServerName
свойство предоставляет имя сервера Windows и экземпляра, которые вместе составляют уникальный экземпляр сервера.@@SERVERNAME
предоставляет имя текущего настроенного локального сервера.и пример Microsoft для текущего сервера это:
SELECT CONVERT(sysname, SERVERPROPERTY('servername'));
этот сценарий полезен, когда на сервере Windows установлено несколько экземпляров SQL Server, и клиент должен открыть другое соединение с тем же экземпляром, который используется текущим соединением.
зачем останавливаться только на имени экземпляра? Вы можете провести инвентаризацию среды 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