Come si trova la versione / edizione di SQL Server senza SSMS installato?


20

Come scoprire quale edizione è installata senza aver installato Management Studio? Ho un server che funziona come un gestore di licenze per un altro software. Dopo aver esaminato un avviso di utilizzo elevato della RAM, ho scoperto che il processo sqlservr.exe occupa quasi 2 GB di RAM.

Ho guardato attraverso il menu del programma e ho scoperto che il gestore della configurazione era installato, altrimenti è piuttosto spoglio. Ho cliccato sulle proprietà del file EXE e ho trovato il 10.50.1600.1, ma non ho trovato alcun posto che indichi se si tratta di Express, Dev, STN, ENT, ecc.

Se dovessi indovinare, questa è un'edizione espressa, ma volevo sapere se c'è un evidente segno rivelatore.

Aggiornamento: @Bob - Il file mi dice quello che so, non l'edizione.

@valo - Ricevo il seguente errore quando eseguo quel comando e ho verificato che i named pipe erano abilitati:

HResult 0x35, livello 16, provider di tubi denominato stato 1: Impossibile aprire una connessione a SQL Server [53]. Sqlcmd: errore: Microsoft SQL Server Native Client 10.0: si è verificato un errore di rete o specifico dell'istanza> durante la creazione di una connessione a SQL Server. Il server non è> trovato o non accessibile. Controlla se il nome dell'istanza è corretto e se SQL Server è configurato> per consentire le connessioni remote. Per ulteriori informazioni, consultare la documentazione in linea di SQL Server. Sqlcmd: errore: Microsoft SQL Server Native Client 10.0: timeout di accesso scaduto.

@thomas - Ho notato il nome dell'unità di mantenimento dello stock prima di porre la domanda, ma mi è sembrato troppo facile, immagino che il mio sospetto iniziale fosse corretto.

Risposte:


18

Questo può essere fatto tramite WMI (accessibile tramite PowerShell nel mio esempio di seguito). Tutto quello che sto facendo è guardare una proprietà ("SKUNAME") del servizio SQL Server, tramite la SqlServiceAdvancedPropertyclasse. Nota, ci sono alcune variabili specifiche dell'ambiente che dovrebbero essere impostate di conseguenza all'inizio del codice.

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

Allo stesso modo, queste stesse informazioni possono essere trovate direttamente nello strumento Gestione configurazione SQL Server. Una volta aperto, fai clic con il pulsante destro del mouse sul servizio SQL Server e vai su Proprietà . Quindi fare clic sulla scheda Avanzate e guardare il tasto Nome unità di magazzino . Troverai quale edizione stai usando.


23

Puoi provare lo strumento da riga di comando:

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

18

Se il servizio SQL Server è in esecuzione (che in base alla descrizione, lo è) controllare il registro degli errori di SQL Server. Non è necessario SSMS installato per fare questo in quanto è solo un file di testo. La posizione del file può variare in base alla modalità di installazione, ma nella documentazione in linea viene visualizzata la posizione predefinita qui .

La prima voce nel registro deve contenere le informazioni sulla versione / edizione.

Modifica: nonostante il commento nella domanda sopra, questo sicuramente ti dice l'edizione:

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: )

12

Risposta rapida

Esegui solo quanto segue:

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

Questo metodo funziona sempre, a differenza delle altre soluzioni che non funzioneranno quando:

  • non vuoi scrivere un programma (ad esempio, PowerShell)?
  • gli strumenti client non sono stati installati (richiesto per utilizzare SQLCMD.EXE)?
  • Non esiste alcun file di registro di SQL Server o non esiste alcun file di registro che contiene eventi di avvio / riavvio?
  • SQL Server non è in esecuzione (quindi SELECT @@VERSION;non è un'opzione)?

Esempio 1
Se è installata una sola istanza, non è necessario utilizzare l' -sopzione:

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

Ritorna:

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

Esempio 2
Se sul computer sono installate più istanze, è necessario utilizzare anche l' -sinterruttore per specificare a quale istanza si è interessati, altrimenti è possibile mescolare le informazioni sulla versione:

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

Ritorna:

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

Informazioni aggiuntive

Il modo più rapido, semplice e affidabile per determinare le informazioni sulla versione di un programma è semplicemente quello di richiedere tali informazioni al programma. La maggior parte dei programmi ( * .COM e * .EXE ) hanno un interruttore della riga di comando / flag / parametro / opzione / dealy-ma-bob che visualizzerà la guida e / o le informazioni sulla versione.

A seconda del programma stesso, l'opzione della riga di comando sarà preceduta da una delle seguenti opzioni:

  • [niente / nada]
  • -
  • -
  • /

E, sempre a seconda del programma stesso, l'opzione della riga di comando sarà una delle seguenti:

  • Più comuni:
    • v
    • versione
  • A volte incluso nelle informazioni di aiuto generali:
    • ?
    • h
    • Aiuto

{Esempi di SQL Server mostrati sopra}

L'utilità della riga di comando SQLCMD.EXE, d'altra parte, utilizza l'opzione -vper passare valori variabili nello script SQL, quindi visualizza solo le informazioni sulla versione nella sua visualizzazione delle informazioni generali:

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, tuttavia, ha solo un set molto limitato di opzioni della riga di comando e nessuna di esse visualizza le informazioni sulla versione.


Metodi alternativi e senza complicazioni:

  • Controlla il registro:

    Chiave: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ {VersionNumber} \ Tools \ Setup
    Nome: Edition

    • Se si conosce il numero di versione (ad es. SQL Server 2012 = 110, SQL Server 2014 = 120, ecc.), È possibile eseguire l'Edizione specificatamente eseguendo quanto segue al prompt dei comandi:

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

      Restituisce una voce simile alla seguente:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\Tools\Setup
          Edition    REG_SZ    Developer Edition
    • Se vuoi vedere l'edizione per qualsiasi cosa accada, esegui quanto segue al prompt dei comandi:

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

      Restituisce una o più voci simili a quella mostrata sopra e alle seguenti:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\Setup
          Edition    REG_SZ    Express Edition
  • Controlla il registro di installazione:

    C: \ Programmi \ Microsoft SQL Server \ {Versione SQL Server: 110, 120, ecc} \ Setup Bootstrap \ Log \ {date_time} \ Detail.txt

    Per la stringa "IsExpressSku":

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.