Gibt es eine Beziehung zwischen dem SQL Server-Dienstnamen und dem Instanznamen?


7

Der Instanzname meines SQL Servers lautet SQLEXPRESS, und der Name des SQL Server-Dienstes sieht aus wie MSSQL $ SQLEXPRESS . Gibt es eine Beziehung zwischen Instanzname und Dienstname? Ich versuche, den SQL Server-Dienststatus anhand des Namens zu überprüfen, und frage mich, ob der Name des SQL Server-Dienstes auf einem anderen Computer unterschiedlich sein kann.

Antworten:


13

Ja, der Dienstname gilt immer MSSQL$<Instance Name>für eine benannte Instanz und MSSQLSERVERfür eine Standardinstanz. Ich glaube nicht, dass sie geändert oder überschrieben werden können, und ich kann mir auch keinen Grund vorstellen, warum Sie dies möchten.

Sie können die auf einem Server installierten Instanzen über die Registrierung auflisten, indem Sie beispielsweise Powershell verwenden:

Get-ItemProperty 'HKLM:\Software\Microsoft\Microsoft SQL Server\Instance Names\SQL'

+1 für die Antwort bezüglich der Instanznamen. Abgesehen davon bevorzuge ich es, die Registrierung nicht direkt in Powershell zu verwenden, es sei denn, es gibt keinen anderen Weg. Für diesen Teil bevorzuge ich den Ansatz von @ThomasStringer. Die Verwendung von WMI ist definitiv ein zuverlässigerer Ansatz.
Schütze McGavin

6

Mark hat Ihnen eine Möglichkeit gezeigt, diese Informationen direkt aus der Registrierung abzurufen. Eine andere Möglichkeit, dies zu tun, ist WMI, das von PowerShell verwendet wird:

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" }
            }
        }}

Mit dem obigen Befehl erhalten Sie den Status der SQL Server-Engine-Dienste auf einem bestimmten Computer.


Ich kann dann davon ausgehen, dass die folgende Logik dann für benannte und unbenannte Instanzen als Dienstname korrekt ist? svcname = instancename! = string.Empty? string.Format ("MSSQL $ {0}", Instanzname): "MSSQLSERVER";
Vas Gr
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.