Wie finden Sie SQL Server Version / Edition ohne SSMS installiert?

20

Wie finde ich heraus, welche Edition installiert ist, ohne dass das Management Studio installiert ist? Ich habe einen Server, der als Lizenzmanager für eine andere Software fungiert. Bei der Untersuchung einer Warnung zu hoher RAM-Auslastung stellte ich fest, dass der Prozess sqlservr.exe fast 2 GB RAM belegt.

Ich habe das Programmmenü durchgesehen und festgestellt, dass der Konfigurationsmanager installiert ist, ansonsten ist er ziemlich einfach. Ich habe auf die Eigenschaften der EXE-Datei geklickt und 10.50.1600.1 gefunden, aber ich habe keinen Ort gefunden, an dem angegeben ist, ob es sich um Express, Dev, STN, ENT usw. handelt.

Wenn ich raten müsste, ist dies eine Expressausgabe, aber ich wollte wissen, ob es ein offensichtliches Hinweisschild gibt.

Update: @Bob - Die Datei sagt mir, was ich weiß, nicht die Edition.

@valo - Ich erhalte die folgende Fehlermeldung, wenn ich diesen Befehl ausführe und überprüfe, ob Named Pipes aktiviert sind:

HResult 0x35, Level 16, State 1 Named Pipes Provider: Es konnte keine Verbindung zu SQL Server [53] hergestellt werden. Sqlcmd: Fehler: Microsoft SQL Server Native Client 10.0: Beim Herstellen einer Verbindung zu SQL Server ist ein netzwerkbezogener oder instanzspezifischer Fehler aufgetreten. Server nicht gefunden oder nicht erreichbar. Überprüfen Sie, ob der Instanzname korrekt ist und ob SQL Server so konfiguriert ist, dass Remoteverbindungen zulässig sind. Weitere Informationen finden Sie in der SQL Server-Onlinedokumentation. Sqlcmd: Fehler: Microsoft SQL Server Native Client 10.0: Anmeldezeitüberschreitung abgelaufen.

@thomas - Ich habe den Namen der Lagerhaltungseinheit bemerkt, bevor ich die Frage gestellt habe, aber das schien zu einfach zu sein, ich glaube, mein anfänglicher Verdacht war richtig.

Sean Perkins
quelle

Antworten:

18

Dies kann über WMI erfolgen (Zugriff über PowerShell in meinem folgenden Beispiel). Alles, was ich tue, ist das Anzeigen einer Eigenschaft ("SKUNAME") des SQL Server-Dienstes über die SqlServiceAdvancedPropertyKlasse. Beachten Sie, dass einige umgebungsspezifische Variablen am oberen Rand des Codes entsprechend festgelegt werden müssen.

$ComputerName = "YourComputerName"
$ServiceName = 'YourEngineServiceName'
$PropertyName = "SKUNAME"

# retrieve the most current version of the ComputerManagement namespace
#
$ComputerManagementNamespace =
    (Get-WmiObject -ComputerName $ComputerName -Namespace "root\microsoft\sqlserver" -Class "__NAMESPACE" |
        Where-Object {$_.Name -like "ComputerManagement*"} |
        Select-Object Name |
        Sort-Object Name -Descending |
        Select-Object -First 1).Name
 
if ($ComputerManagementNamespace -eq $null) {
    Write-Error "ComputerManagement namespace not found"
}
else {
    $ComputerManagementNamespace = "root\microsoft\sqlserver\" + $ComputerManagementNamespace
} 

# get the property and its value
#
Get-WmiObject -ComputerName $ComputerName -Namespace $ComputerManagementNamespace -Class "SqlServiceAdvancedProperty" |
    Where-Object {
        $_.ServiceName -eq $ServiceName -and
        $_.PropertyName -eq $PropertyName
    } |
    Select-Object @{Name = "ComputerName"; Expression = { $ComputerName }},
        ServiceName,
        @{Name = "PropertyValue"; Expression = {
            if ($_.PropertyValueType -eq 0) {
                $_.PropertyStrValue
            }
            else {
                $_.PropertyNumValue
            }
        }}

Dieselben Informationen finden Sie auch direkt im SQL Server Configuration Manager-Tool. Sobald Sie es geöffnet haben, klicken Sie mit der rechten Maustaste auf Ihren SQL Server-Dienst und gehen Sie zu Eigenschaften . Klicken Sie dann auf die Registerkarte Erweitert und sehen Sie sich den Schlüssel Name der Lagerhaltungseinheit an . Dort finden Sie, welche Edition Sie verwenden.

Thomas Stringer
quelle
23

Sie können das Befehlszeilentool ausprobieren:

C:\>sqlcmd -S [SERVER] -d [DB_NAME] -E -Q "SELECT @@VERSION"
valo
quelle
18

Wenn der SQL Server-Dienst ausgeführt wird (basierend auf Ihrer Beschreibung), überprüfen Sie das SQL Server-Fehlerprotokoll. Hierzu muss kein SSMS installiert sein, da es sich lediglich um eine Textdatei handelt. Der Speicherort der Datei kann je nach Installation variieren, die Onlinedokumentation zeigt jedoch hier den Standardspeicherort an .

Der erste Eintrag im Protokoll sollte die Versions- / Editionsinformationen enthalten.

Edit: Trotz des Kommentars in der obigen Frage sagt Ihnen dies mit Sicherheit die Ausgabe:

2014-06-08 00:05:00.050 spid158      Microsoft SQL Server 2012 (SP1) - 11.0.3381.0 (X64) 

Aug 23 2013 20:08:13 

Copyright (c) Microsoft Corporation

Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
Bob Pusateri
quelle
12

Schnelle Antwort

Führen Sie einfach Folgendes aus:

{InstanceHome}\MSSQL\Binn\sqlservr.exe -v [-s InstanceName]

NOTE ABOUT SQL Server Express LocalDB: LocalDB can only be determined by the
existence of the following folder:

C:\Program Files\Microsoft SQL Server\{SQL Server Version: 110, 120, etc}\LocalDB\Binn

Running "sqlserver.exe -v" doesn't help as it reports as being "Developer Edition", and
searching the Registry it reports as being "Express Edition".

Diese Methode funktioniert immer, im Gegensatz zu den anderen Lösungen, die nicht funktionieren, wenn:

  • Sie möchten kein Programm schreiben (z. B. PowerShell)?
  • Wurden die Client-Tools nicht installiert (zur Verwendung von SQLCMD.EXE erforderlich)?
  • Gibt es entweder keine SQL Server-Protokolldatei oder keine Protokolldatei, die Start- / Neustartereignisse enthält?
  • SQL Server läuft nicht (daher SELECT @@VERSION;keine Option)?

Beispiel 1
Wenn Sie nur eine Instanz installiert haben, müssen Sie den -sSchalter nicht verwenden:

C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn>sqlservr.exe -v

Kehrt zurück:

2015-08-01 11:40:11.63 Server      Logging to event log is disabled. Startup option '-v' is supplied, either from the registry or the command prompt.
2015-08-01 11:40:11.63 Server      Microsoft SQL Server 2012 - 11.0.5343.0 (X64)
        May  4 2015 19:11:32
        Copyright (c) Microsoft Corporation
        Developer Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )

2015-08-01 11:40:11.63 Server      (c) Microsoft Corporation.
2015-08-01 11:40:11.63 Server      All rights reserved.
2015-08-01 11:40:11.63 Server      Server process ID is 3824.
2015-08-01 11:40:11.63 Server      System Manufacturer: '{CompanyName}', System Model: '{ModelNumber}'.
2015-08-01 11:40:11.63 Server      Authentication mode is MIXED.
2015-08-01 11:40:11.63 Server      The service account is '{AccountName}'. This is an informational message; no user action is required.
2015-08-01 11:40:11.63 Server      SQL Server shutdown has been initiated

Beispiel 2
Wenn auf dem Computer mehrere Instanzen installiert sind, müssen Sie mit dem -sSchalter auch angeben, für welche Instanz Sie sich interessieren. Andernfalls können Versionsinformationen gemischt werden:

C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS2014\MSSQL\Binn>sqlservr.exe -v
       -s SQLEXPRESS2014

Kehrt zurück:

2015-08-01 12:01:13.13 Server      Logging to event log is disabled. Startup option '-v' is supplied, either from the registry or the command prompt.
2015-08-01 12:01:13.13 Server      Microsoft SQL Server 2014 - 12.0.4213.0 (X64)
        Jun  9 2015 12:06:16
        Copyright (c) Microsoft Corporation
        Express Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )

2015-08-01 12:01:13.13 Server      UTC adjustment: -4:00
2015-08-01 12:01:13.13 Server      (c) Microsoft Corporation.
2015-08-01 12:01:13.13 Server      All rights reserved.
2015-08-01 12:01:13.13 Server      Server process ID is 1712.
2015-08-01 12:01:13.13 Server      System Manufacturer: '{CompanyName}', System Model: '{ModelNumber}'.
2015-08-01 12:01:13.13 Server      Authentication mode is WINDOWS-ONLY.
2015-08-01 12:01:13.13 Server      The service account is '{AccountName}'. This is an informational message; no user action is required.
2015-08-01 12:01:13.13 Server      SQL Server shutdown has been initiated

zusätzliche Information

Die schnellste, einfachste und zuverlässigste Möglichkeit, Versionsinformationen eines Programms zu ermitteln, besteht darin, diese Informationen einfach vom Programm anzufordern. Die meisten Programme ( * .COM und * .EXE ) verfügen über eine Befehlszeilenoption / flag / parameter / option / dealy-ma-bob, mit der Hilfe- und / oder Versionsinformationen angezeigt werden.

Abhängig vom Programm selbst wird der Befehlszeilenoption eines der folgenden Präfixe vorangestellt:

  • [nothing / nada]
  • -
  • -
  • /

Je nach Programm ist der Befehlszeilenschalter einer der folgenden:

  • Am gebräuchlichsten:
    • v
    • Ausführung
  • Manchmal in der allgemeinen Hilfe enthalten:
    • ?
    • h
    • Hilfe

{Oben gezeigte SQL Server-Beispiele}

Das Befehlszeilendienstprogramm SQLCMD.EXE verwendet den -vSchalter dagegen, um Variablenwerte an das SQL-Skript zu übergeben, sodass nur die Versionsinformationen in der allgemeinen Informationsanzeige angezeigt werden:

C:\>sqlcmd /?
Microsoft (R) SQL Server Command Line Tool
Version 11.0.2100.60 NT x64
Copyright (c) 2012 Microsoft. All rights reserved.

usage: Sqlcmd            [-U login id]          [-P password]
  [-S server]            [-H hostname]          [-E trusted connection]
  ...
  [-v var = "value"...]  ...
  ...
  [-? show syntax summary]

NotePad verfügt jedoch nur über einen sehr begrenzten Satz von Befehlszeilenschaltern , und keiner von ihnen zeigt Versionsinformationen an.


Alternative, unkomplizierte Methoden:

  • Überprüfen Sie die Registrierung:

    Schlüssel: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ {Versionsnummer} \ Tools \ Setup
    Name: Edition

    • Wenn Sie die Versionsnummer kennen (z. B. SQL Server 2012 = 110, SQL Server 2014 = 120 usw.), können Sie die Edition speziell dafür ausführen, indem Sie Folgendes an einer Eingabeaufforderung ausführen:

      REG QUERY "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\{VersionNumber}\Tools\Setup" /v /e /f Edition

      Gibt einen Eintrag ähnlich dem folgenden zurück:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\Tools\Setup
          Edition    REG_SZ    Developer Edition
    • Wenn Sie wissen möchten, welche Edition installiert werden soll, führen Sie Folgendes an einer Eingabeaufforderung aus:

      REG QUERY "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server" /s /v /e /f Edition

      Gibt einen oder mehrere Einträge ähnlich dem oben gezeigten und folgenden zurück:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\Setup
          Edition    REG_SZ    Express Edition
  • Überprüfen Sie das Installationsprotokoll:

    C: \ Programme \ Microsoft SQL Server \ {SQL Server-Version: 110, 120 usw.} \ Setup Bootstrap \ Log \ {date_time} \ Detail.txt

    Für die Zeichenfolge "IsExpressSku":

    (03) 2014-09-05 16:53:44 SQLEngine: --EffectiveProperties: IsExpressSku = True

Solomon Rutzky
quelle