如何从T-SQL获取当前实例名称

Gui*_*rez 78 sql t-sql sql-server sql-server-2008r2-express

如何使用T-SQL脚本获取当前连接的SQL Server服务器和实例名称?

Gui*_*rez 150

刚刚找到答案,在这个问题中(字面意思是,问题内部,没有任何答案):

SELECT @@servername
Run Code Online (Sandbox Code Playgroud)

返回servername\instance,只要这不是默认实例

SELECT @@servicename
Run Code Online (Sandbox Code Playgroud)

返回实例名称,即使这是默认值(MSSQLSERVER)

  • 不正确,使用@@ servername会给你一个错误的答案.SELECT CONVERT(sysname,SERVERPROPERTY('servername'))是正确的答案.@@ ServerName报告SQL群集名称,而serverproperty('servername')报告Windows群集名称.您需要Windows群集名称才能连接到您的数据库(Windows群集名称可能与SQL群集名称不同;这通常发生在另一台计算机上安装新的sql-server版本时(@@ servername = Environment.MachineName)并希望保留旧名称,以便您不必更改所有配置). (7认同)

Ben*_*eno 16

这个怎么样:

EXECUTE xp_regread @rootkey='HKEY_LOCAL_MACHINE',
                   @key='SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQl',
                   @value_name='MSSQLSERVER'
Run Code Online (Sandbox Code Playgroud)

这也将获得实例名称.null表示默认实例:

SELECT SERVERPROPERTY ('InstanceName')
Run Code Online (Sandbox Code Playgroud)

http://technet.microsoft.com/en-us/library/ms174396.aspx

  • SELECT SERVERPROPERTY('InstanceName')给了我一个NULL. (10认同)
  • 而是使用SELECT CONVERT(sysname,SERVERPROPERTY('servername')); (3认同)

Shi*_*ari 10

SELECT @@servername 会给你数据 server/instanceName

只获得instanceName你应该运行select @@ServiceName查询.


shA*_*A.t 8

我找到了这个:

EXECUTE xp_regread
        @rootkey = 'HKEY_LOCAL_MACHINE',
        @key = 'SOFTWARE\Microsoft\Microsoft SQL Server',
        @value_name = 'InstalledInstances'
Run Code Online (Sandbox Code Playgroud)

这将为您提供服务器中安装的所有实例的列表.


函数的ServerName属性SERVERPROPERTY@@SERVERNAME返回类似的信息.该ServerName属性提供Windows服务器和实例名称,它们共同构成唯一的服务器实例.@@SERVERNAME提供当前配置的本地服务器名称.

而当前服务器的Microsoft示例是:

SELECT CONVERT(sysname, SERVERPROPERTY('servername'));
Run Code Online (Sandbox Code Playgroud)

当Windows服务器上安装了多个SQL Server实例时,此方案很有用,并且客户端必须打开与当前连接使用的同一实例的另一个连接.


Nat*_* S. 6

为什么只停留实例名称?您可以使用以下方法清点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
Run Code Online (Sandbox Code Playgroud)