Comment trouvez-vous la version / édition de SQL Server sans SSMS installé?

20

Comment savoir quelle édition est installée sans que le studio de gestion soit installé? J'ai un serveur qui fonctionne comme gestionnaire de licence pour un autre logiciel. Après enquête sur une alerte d'utilisation élevée de RAM, j'ai trouvé que le processus sqlservr.exe prend près de 2 Go de RAM.

J'ai regardé à travers le menu du programme et j'ai constaté que le gestionnaire de configuration était installé, sinon, c'est assez simple. J'ai cliqué sur les propriétés du fichier EXE et j'ai trouvé 10.50.1600.1, mais il n'y a aucun endroit que j'ai trouvé qui indique s'il s'agit d'Express, Dev, STN, ENT, etc.

Si je devais deviner, il s'agit d'une édition express, mais je voulais savoir s'il y avait un signe révélateur évident.

Mise à jour: @Bob - Le fichier me dit ce que je sais, pas l'édition.

@valo - J'obtiens l'erreur suivante lorsque j'exécute cette commande et j'ai vérifié que les canaux nommés étaient activés:

HResult 0x35, niveau 16, fournisseur de canaux nommés de l'état 1: impossible d'ouvrir une connexion à SQL Server [53]. Sqlcmd: Erreur: Microsoft SQL Server Native Client 10.0: une erreur liée au réseau ou spécifique à l'instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur n'est pas> trouvé ou n'est pas accessible. Vérifiez si le nom de l'instance est correct et si SQL Server est configuré> pour autoriser les connexions à distance. Pour plus d'informations, consultez la documentation en ligne de SQL Server. Sqlcmd: erreur: Microsoft SQL Server Native Client 10.0: le délai de connexion a expiré.

@thomas - J'ai remarqué le nom de l'unité de gestion des stocks avant de poser la question, mais cela semblait trop facile, je suppose que ma suspicion initiale était correcte.

Sean Perkins
la source

Réponses:

18

Cela peut être fait via WMI (accessible via PowerShell dans mon exemple ci-dessous). Tout ce que je fais, c'est regarder une propriété ("SKUNAME") du service SQL Server, via la SqlServiceAdvancedPropertyclasse. Remarque, il y a quelques variables spécifiques à l'environnement qui devraient être définies en conséquence en haut du code.

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

De même, ces mêmes informations se trouvent directement dans l'outil SQL Server Configuration Manager. Une fois que vous l'ouvrez, cliquez avec le bouton droit sur votre service SQL Server et accédez aux propriétés . Cliquez ensuite sur l' onglet Avancé et regardez la clé Nom de l'unité de stockage . Vous y trouverez l'édition que vous utilisez.

Thomas Stringer
la source
23

Vous pouvez essayer l'outil de ligne de commande:

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

Si le service SQL Server est en cours d'exécution (ce qui est basé sur votre description), vérifiez le journal des erreurs SQL Server. Vous n'avez pas besoin que SSMS soit installé pour ce faire car il s'agit simplement d'un fichier texte. L'emplacement du fichier peut varier en fonction de la façon dont il a été installé, mais Books Online affiche l'emplacement par défaut ici .

La première entrée du journal doit contenir les informations de version / édition.

Edit: Malgré le commentaire de la question ci-dessus, cela vous indique très certainement l'édition:

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
la source
12

Réponse rapide

Exécutez simplement ce qui suit:

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

Cette méthode fonctionne toujours, contrairement aux autres solutions qui ne fonctionneront pas lorsque:

  • vous ne voulez pas écrire un programme (par exemple, PowerShell)?
  • les outils client n'ont pas été installés (requis pour utiliser SQLCMD.EXE)?
  • Il n'existe aucun fichier journal SQL Server ou aucun fichier journal contenant des événements de démarrage / redémarrage?
  • SQL Server n'est pas en cours d'exécution ( SELECT @@VERSION;n'est donc pas une option)?

Exemple 1
Si vous n'avez qu'une seule instance installée, vous n'avez pas besoin d'utiliser le -scommutateur:

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

Retour:

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

Exemple 2
Si plusieurs instances sont installées sur la machine, vous devez également utiliser le -scommutateur pour spécifier l'instance qui vous intéresse, sinon elle peut mélanger les informations de version:

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

Retour:

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

Information additionnelle

Le moyen le plus rapide, le plus simple et le plus fiable pour déterminer les informations de version d'un programme est simplement de demander ces informations au programme. La plupart des programmes ( * .COM et * .EXE ) ont un commutateur de ligne de commande / drapeau / paramètre / option / dealy-ma-bob qui affichera l'aide et / ou les informations de version.

Selon le programme lui-même, le commutateur de ligne de commande sera préfixé par l'un des éléments suivants:

  • [rien / nada]
  • -
  • -
  • /

Et, toujours en fonction du programme lui-même, le commutateur de ligne de commande sera l'un des suivants:

  • Le plus commun:
    • v
    • version
  • Parfois inclus dans les informations d'aide générales:
    • ?
    • h
    • Aidez-moi

{Exemples SQL Server illustrés ci-dessus}

L'utilitaire de ligne de commande SQLCMD.EXE, d'autre part, utilise le -vcommutateur pour passer des valeurs de variable dans le script SQL, de sorte qu'il n'affiche que les informations de version dans son affichage d'informations générales:

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, cependant, ne dispose que d'un ensemble très limité de commutateurs de ligne de commande , et aucun d'entre eux n'affiche les informations de version.


Méthodes alternatives et simples:

  • Vérifiez le registre:

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

    • Si vous connaissez le numéro de version (par exemple, SQL Server 2012 = 110, SQL Server 2014 = 120, etc.), vous pouvez l'édition spécifique pour celui-ci en exécutant ce qui suit à une invite de commandes:

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

      Renvoie une entrée similaire à la suivante:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\Tools\Setup
          Edition    REG_SZ    Developer Edition
    • Si vous voulez voir l'édition pour tout ce qui est installé, exécutez ce qui suit à l'invite de commandes:

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

      Renvoie une ou plusieurs entrées similaires à celle illustrée ci-dessus et les suivantes:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\Setup
          Edition    REG_SZ    Express Edition
  • Consultez le journal d'installation:

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

    Pour la chaîne "IsExpressSku":

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

Solomon Rutzky
la source