¿Cómo encuentra la versión / edición de SQL Server sin SSMS instalado?


20

¿Cómo saber qué edición está instalada sin tener instalado el estudio de gestión? Tengo un servidor que funciona como administrador de licencias para otro software. Tras la investigación de una alerta de alto uso de RAM, descubrí que el proceso sqlservr.exe está ocupando casi 2 GB de RAM.

Miré a través del menú del programa y descubrí que el administrador de configuración estaba instalado, de lo contrario, es bastante básico. Hice clic en las propiedades del archivo EXE y encontré 10.50.1600.1, pero no he encontrado ningún lugar que indique si es Express, Dev, STN, ENT, etc.

Si tuviera que adivinar, esta es una edición exprés, pero quería saber si hay una señal evidente.

Actualización: @Bob: el archivo me dice lo que sé, no la edición.

@valo - Recibo el siguiente error cuando ejecuto ese comando y verifiqué que las canalizaciones con nombre estén habilitadas:

HResult 0x35, Nivel 16, Estado 1 Proveedor de canalizaciones con nombre: no se pudo abrir una conexión a SQL Server [53]. Sqlcmd: Error: Microsoft SQL Server Native Client 10.0: Se ha producido un error relacionado con la red o específico de la instancia> al establecer una conexión con SQL Server. El servidor no se encuentra o no está accesible. Compruebe si el nombre de la instancia es correcto y si SQL Server está configurado> para permitir conexiones remotas. Para obtener más información, consulte los Libros en pantalla de SQL Server. Sqlcmd: Error: Microsoft SQL Server Native Client 10.0: expiró el tiempo de espera de inicio de sesión.

@thomas: noté el nombre de la unidad de mantenimiento de existencias antes de hacer la pregunta, pero eso parecía demasiado fácil, supongo que mi sospecha inicial era correcta.

Respuestas:


18

Esto se puede hacer a través de WMI (se accede a través de PowerShell en mi ejemplo a continuación). Todo lo que estoy haciendo es mirar una propiedad ("SKUNAME") del servicio SQL Server, a través de la SqlServiceAdvancedPropertyclase. Tenga en cuenta que hay algunas variables específicas del entorno que tendrían que establecerse en consecuencia en la parte superior del código.

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

Del mismo modo, esta misma información se puede encontrar directamente en la herramienta Administrador de configuración de SQL Server. Una vez que lo abra, haga clic derecho en su servicio de SQL Server y vaya a Propiedades . Luego haga clic en la pestaña Avanzado y mire la tecla Nombre de la unidad de mantenimiento de existencias . Allí encontrará qué edición está utilizando.


23

Puedes probar la herramienta de línea de comando:

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

18

Si el servicio de SQL Server se está ejecutando (lo cual se basa en su descripción) verifique el registro de errores de SQL Server. No necesita SSMS instalado para hacer esto, ya que es solo un archivo de texto. La ubicación del archivo puede variar según cómo se instaló, pero Books Online muestra la ubicación predeterminada aquí .

La primera entrada en el registro debe contener la información de versión / edición.

Editar: a pesar del comentario en la pregunta anterior, esto ciertamente te dice la edición:

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

Respuesta rápida

Simplemente ejecute lo siguiente:

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

Este método siempre funciona, a diferencia de las otras soluciones que no funcionarán cuando:

  • no quieres escribir un programa (por ejemplo, PowerShell)?
  • ¿No se han instalado las herramientas de cliente (necesario para usar SQLCMD.EXE)?
  • ¿No hay un archivo de registro de SQL Server o no hay ningún archivo de registro que contenga eventos de inicio / reinicio?
  • ¿SQL Server no se está ejecutando (por SELECT @@VERSION;lo tanto, no es una opción)?

Ejemplo 1
Si solo tiene una única Instancia instalada, no necesita usar el -sconmutador:

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

Devoluciones:

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

Ejemplo 2
Si tiene instancias múltiples instaladas en la máquina, también debe usar el -sinterruptor para especificar qué instancia le interesa, de lo contrario, puede mezclar información de la versión:

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

Devoluciones:

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

Información Adicional

La forma más rápida, fácil y confiable de determinar la información de versión de un programa es simplemente solicitar esa información al programa. La mayoría de los programas ( * .COM y * .EXE ) tienen un interruptor / indicador / parámetro / opción / dealy-ma-bob en la línea de comandos que mostrará información de ayuda y / o versión.

Dependiendo del programa en sí, el interruptor de la línea de comandos tendrá como prefijo uno de los siguientes:

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

Y, nuevamente, dependiendo del programa en sí, el interruptor de línea de comandos será uno de los siguientes:

  • Más común:
    • v
    • versión
  • A veces incluido en la información de ayuda general:
    • ?
    • h
    • ayuda

{Ejemplos de SQL Server mostrados arriba}

La utilidad de línea de comandos SQLCMD.EXE, por otro lado, usa el -vinterruptor para pasar valores variables en el script SQL, por lo que solo muestra información de versión en su pantalla de información general:

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, sin embargo, solo tiene un conjunto muy limitado de modificadores de línea de comandos , y ninguno de ellos muestra información de versión.


Métodos alternativos sin complicaciones:

  • Revisa el registro:

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

    • Si conoce el número de versión (por ejemplo, SQL Server 2012 = 110, SQL Server 2014 = 120, etc.), puede realizar la Edición específicamente ejecutando lo siguiente en el símbolo del sistema:

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

      Devuelve una entrada similar a la siguiente:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\Tools\Setup
          Edition    REG_SZ    Developer Edition
    • Si desea ver la Edición para lo que sea que esté instalado, ejecute lo siguiente en el símbolo del sistema:

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

      Devuelve una o más entradas similares a la que se muestra arriba y lo siguiente:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\Setup
          Edition    REG_SZ    Express Edition
  • Verifique el registro de instalación:

    C: \ Archivos de programa \ Microsoft SQL Server \ {Versión de SQL Server: 110, 120, etc.} \ Setup Bootstrap \ Log \ {date_time} \ Detail.txt

    Para la cadena "IsExpressSku":

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.