web-dev-qa-db-fra.com

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

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 RAM, j'ai trouvé que le sqlservr.exe processus 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 trouvé 10.50.1600.1, mais je n'ai trouvé aucun endroit indiquant 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 stockage avant de poser la question, mais cela semblait trop facile, je suppose que mon la suspicion initiale était correcte.

20
Sean Perkins

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 classe SqlServiceAdvancedProperty. 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, faites un clic droit sur votre service SQL Server et allez dans 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.

18
Thomas Stringer

Vous pouvez essayer l'outil de ligne de commande:

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

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 montre 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: )
18
Bob Pusateri

Réponse rapide

Exécutez simplement ce qui suit:

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

REMARQUE À PROPOS DE SQL Server Express LocalDB: LocalDB ne peut être déterminé que par le
existence du dossier suivant:

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

L'exécution de "sqlserver.exe -v" n'aide pas car il indique qu'il s'agit de "Developer Edition", et
recherche dans le Registre qu'il signale comme "Édition Express".

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 (d'où SELECT @@VERSION; n'est pas une option)?

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

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 -s commutateur pour spécifier l'instance qui vous intéresse, sinon il 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 une commande -interrupteur/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 -v passer pour passer des valeurs variables 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 d'informations de version.


Méthodes alternatives et simples:

  • Vérifiez le registre:

    Clé: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\{VersionNumber}\Tools\Setup
    Nom: Édition

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

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

      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

12
Solomon Rutzky