SQL Server 服务名称和实例名称之间有任何关系吗?

Fur*_*nci 7 sql-server-2008

我的 SQL Server 的实例名称是SQLEXPRESS并且 SQL Server 服务名称看起来像MSSQL$SQLEXPRESS。实例名称和服务名称之间有什么关系吗?我正在尝试按名称检查 SQL Server 服务状态,我想知道其他计算机上的 SQL Server 服务名称可以不同吗?

Mar*_*ith 13

是的,服务名称始终MSSQL$<Instance Name>用于命名实例和MSSQLSERVER默认实例。我不相信两者都可以被改变或覆盖,我也想不出你想要的任何理由。

您可以通过注册表枚举服务器上已安装的实例,例如使用 Powershell:

Get-ItemProperty 'HKLM:\Software\Microsoft\Microsoft SQL Server\Instance Names\SQL'
Run Code Online (Sandbox Code Playgroud)


Tho*_*ger 6

Mark 向您展示了一种直接从注册表获取此信息的方法,但另一种方法是通过 WMI,由 PowerShell 使用:

Get-WmiObject -ComputerName "YourDestinationServer" -Namespace "root\microsoft\sqlserver\computermanagement11" -Class "SqlService" |
    Where-Object {$_.SQLServiceType -eq 1} |
    Select-Object ServiceName, DisplayName, 
        @{Name = "StateDesc"; Expression = {
            switch ($_.State) {
                1 { "Stopped" }
                2 { "Start Pending" }
                3 { "Stop Pending" }
                4 { "Running" }
                5 { "Continue Pending" }
                6 { "Pause Pending" }
                7 { "Paused" }
            }
        }}
Run Code Online (Sandbox Code Playgroud)

上述命令将为您提供特定机器上 SQL Server 引擎服务的状态。