103

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

4

8 回答 8

189

刚刚在这个 SO 问题中找到了答案(从字面上看,在问题内部,没有任何答案):

SELECT @@servername

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

SELECT @@servicename

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

于 2013-08-06T01:11:11.863 回答
17

这个怎么样:

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

于 2013-08-06T01:03:45.270 回答
11

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

要仅获取instanceName您应该运行select @@ServiceNamequery 。

于 2015-05-18T10:49:24.053 回答
9

为什么只停留在实例名称上?您可以使用以下内容清点您的 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
于 2017-05-25T21:12:51.547 回答
8

我找到了这个:

EXECUTE xp_regread
        @rootkey = 'HKEY_LOCAL_MACHINE',
        @key = 'SOFTWARE\Microsoft\Microsoft SQL Server',
        @value_name = 'InstalledInstances'

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


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

当前服务器的 Microsoft 示例是:

SELECT CONVERT(sysname, SERVERPROPERTY('servername'));

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

于 2015-06-07T04:39:59.437 回答
3

要获取您连接到的服务器和实例的列表:

select * from Sys.Servers

要获取连接的服务器具有的数据库列表:

SELECT * from sys.databases;
于 2020-02-28T21:05:15.083 回答
1

只是为了向注册表查询添加一些说明。它们仅列出当前实例的匹配位数(32 或 64)的实例。

64 位操作系统上 32 位 SQL 实例的实际注册表项是:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server

您可以在 64 位实例上查询它以获取所有 32 位实例。32 位实例似乎仅限于 Wow6432Node,因此无法读取 64 位注册表树。

于 2019-08-06T03:47:42.223 回答
0

另一种查找实例名称的方法 - 右键单击​​数据库名称并选择属性,在这部分您可以在左下角看到查看连接属性,单击它然后您可以看到实例名称。

于 2018-07-05T09:19:07.027 回答