Jak znaleźć wersję / edycję SQL Server bez zainstalowanego SSMS?

20

Jak dowiedzieć się, która edycja jest zainstalowana bez zainstalowanego studia zarządzania? Mam serwer, który działa jako menedżer licencji dla innego oprogramowania. Po zbadaniu alertu o wysokim zużyciu pamięci RAM odkryłem, że proces sqlservr.exe zajmuje prawie 2 GB pamięci RAM.

Przejrzałem menu programu i stwierdziłem, że menedżer konfiguracji został zainstalowany, w przeciwnym razie jest to całkiem gołe kości. Kliknąłem właściwości pliku EXE i znalazłem 10.50.1600.1, ale nie znalazłem miejsca, które mówi, czy jest to Express, Dev, STN, ENT itp.

Gdybym musiał zgadywać, jest to wydanie ekspresowe, ale chciałem wiedzieć, czy istnieje oczywisty znak ostrzegawczy.

Aktualizacja: @Bob - plik mówi mi to, co wiem, a nie wydanie.

@valo - Po uruchomieniu tego polecenia pojawia się następujący błąd i sprawdzam, czy nazwane potoki są włączone:

HResult 0x35, poziom 16, dostawca nazwanych potoków stanu 1: Nie można otworzyć połączenia z serwerem SQL Server [53]. Sqlcmd: Błąd: Microsoft SQL Server Native Client 10.0: Wystąpił błąd związany z siecią lub wystąpieniem> podczas nawiązywania połączenia z SQL Server. Serwer nie został> znaleziony lub niedostępny. Sprawdź, czy nazwa wystąpienia jest poprawna i czy SQL Server jest skonfigurowany> zezwalając na połączenia zdalne. Aby uzyskać więcej informacji, zobacz Książki programu SQL Server online. Sqlcmd: Błąd: Microsoft SQL Server Native Client 10.0: Upłynął limit czasu logowania.

@thomas - zauważyłem photography Utrzymanie Jednostka Nazwa zanim zadałem pytanie, ale wydawało się, że zbyt łatwo, chyba moje pierwsze podejrzenie było prawidłowe.

Sean Perkins
źródło

Odpowiedzi:

18

Można to zrobić za pomocą WMI (dostępnego w PowerShell w moim poniższym przykładzie). Wszystko, co robię, to przeglądanie właściwości („SKUNAME”) usługi SQL Server za pośrednictwem SqlServiceAdvancedPropertyklasy. Uwaga: istnieje kilka zmiennych specyficznych dla środowiska, które należałoby odpowiednio ustawić na górze kodu.

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

Podobnie te same informacje można znaleźć bezpośrednio w narzędziu SQL Server Configuration Manager. Po otwarciu kliknij prawym przyciskiem myszy usługę SQL Server i przejdź do Właściwości . Następnie kliknij kartę Zaawansowane i spójrz na klucz Nazwa jednostki magazynowej . Tam znajdziesz wersję, której używasz.

Thomas Stringer
źródło
23

Możesz wypróbować narzędzie wiersza poleceń:

C:\>sqlcmd -S [SERVER] -d [DB_NAME] -E -Q "SELECT @@VERSION"
valo
źródło
18

Jeśli usługa SQL Server jest uruchomiona (która jest oparta na twoim opisie), sprawdź dziennik błędów SQL Server. Aby to zrobić, nie potrzebujesz zainstalowanego SSMS, ponieważ jest to tylko plik tekstowy. Lokalizacja pliku może się różnić w zależności od sposobu jego zainstalowania, ale Books Online pokazuje tutaj domyślną lokalizację .

Pierwszy wpis w dzienniku powinien zawierać informacje o wersji / edycji.

Edycja: Pomimo komentarza w powyższym pytaniu, to z pewnością mówi wam wydanie:

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
źródło
12

Szybka odpowiedź

Po prostu uruchom następujące polecenie:

{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".

Ta metoda zawsze działa, w przeciwieństwie do innych rozwiązań, które nie będą działać, gdy:

  • nie chcesz pisać programu (na przykład PowerShell)?
  • Narzędzia klienta nie zostały zainstalowane (wymagane do korzystania z SQLCMD.EXE)?
  • Nie ma pliku dziennika programu SQL Server lub nie ma pliku dziennika zawierającego zdarzenia uruchamiania / restartowania?
  • SQL Server nie działa (stąd SELECT @@VERSION;nie ma opcji)?

Przykład 1
Jeśli masz zainstalowaną tylko jedną instancję, nie musisz używać -sprzełącznika:

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

Zwroty:

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

Przykład 2
Jeśli na komputerze jest zainstalowanych wiele instancji, należy również użyć -sprzełącznika, aby określić, która instancja jest zainteresowana, w przeciwnym razie może ona mieszać informacje o wersji:

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

Zwroty:

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

Dodatkowe informacje

Najszybszym, najłatwiejszym i najbardziej niezawodnym sposobem na określenie informacji o wersji programu jest po prostu zażądanie tych informacji od programu. Większość programów ( * .COM i * .EXE ) ma przełącznik wiersza polecenia / flag / parameter / option / dealy-ma-bob, który wyświetla pomoc i / lub informacje o wersji.

W zależności od samego programu przełącznik wiersza polecenia będzie poprzedzony jedną z następujących czynności:

  • [nic / nada]
  • -
  • -
  • /

I znowu, w zależności od samego programu, przełącznik wiersza poleceń będzie jednym z następujących:

  • Najczęściej:
    • v
    • wersja
  • Czasami zawarte w ogólnych informacjach pomocy:
    • ?
    • h
    • Wsparcie

{Przykłady programu SQL Server pokazane powyżej}

Z kolei narzędzie SQLCMD.EXE z wiersza poleceń używa -vprzełącznika do przekazywania wartości zmiennych do skryptu SQL, więc wyświetla informacje o wersji tylko na ekranie informacji ogólnych:

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]

Uwaga: Pad ma jednak bardzo ograniczony zestaw przełączników wiersza polecenia i żaden z nich nie wyświetla informacji o wersji.


Alternatywne, bezproblemowe metody:

  • Sprawdź rejestr:

    Klucz: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ {VersionNumber} \ Tools \ Setup
    Name: Edition

    • Jeśli znasz numer wersji (np. SQL Server 2012 = 110, SQL Server 2014 = 120 itd.), Możesz go dla niego wydać, uruchamiając następujące polecenie w wierszu polecenia:

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

      Zwraca jeden wpis podobny do następującego:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\Tools\Setup
          Edition    REG_SZ    Developer Edition
      
    • Jeśli chcesz zobaczyć wydanie dla tego, co zostanie zainstalowane, uruchom następujące polecenie w wierszu polecenia:

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

      Zwraca jeden lub więcej wpisów podobnych do pokazanego powyżej i następujące:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\Setup
          Edition    REG_SZ    Express Edition
      
  • Sprawdź dziennik instalacji:

    C: \ Program Files \ Microsoft SQL Server \ {SQL Server Wersja: 110, 120 itp.} \ Setup Bootstrap \ Log \ {date_time} \ Detail.txt

    Dla ciągu „IsExpressSku”:

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

Solomon Rutzky
źródło