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.
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.
Vous pouvez essayer l'outil de ligne de commande:
C:\>sqlcmd -S [SERVER] -d [DB_NAME] -E -Q "SELECT @@VERSION"
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: )
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:
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
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:
Et, toujours en fonction du programme lui-même, le commutateur de ligne de commande sera l'un des suivants:
{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