Como você encontra a versão / edição do SQL Server sem o SSMS instalado?

20

Como descobrir qual edição está instalada sem ter o estúdio de gerenciamento instalado? Eu tenho um servidor que funciona como um gerenciador de licenças para outro software. Após a investigação de um alerta de uso alto de RAM, descobri que o processo sqlservr.exe ocupa quase 2 GB de RAM.

Eu olhei através do menu do programa e descobri que o gerenciador de configuração estava instalado, caso contrário, é bastante simples. Cliquei nas propriedades do arquivo EXE e encontrei 10.50.1600.1, mas não encontrei nenhum local que indique se é Express, Dev, STN, ENT, etc.

Se eu tivesse que adivinhar, esta é uma edição expressa, mas eu queria saber se há um sinal óbvio de contar histórias.

Atualização: @Bob - O arquivo me diz o que eu sei, não a edição.

@valo - Recebo o seguinte erro ao executar esse comando e verifiquei se os pipes nomeados estavam ativados:

HResult 0x35, Nível 16, Estado 1 Provedor de Pipes Nomeados: Não foi possível abrir uma conexão com o SQL Server [53]. Sqlcmd: Erro: Microsoft SQL Server Native Client 10.0: Ocorreu um erro relacionado à rede ou à instância> específica ao estabelecer uma conexão com o SQL Server. O servidor não foi encontrado ou não está acessível. Verifique se o nome da instância está correto e se o SQL Server está configurado> para permitir conexões remotas. Para obter mais informações, consulte os Manuais Online do SQL Server. Sqlcmd: Erro: Microsoft SQL Server Native Client 10.0: O tempo limite do logon expirou.

@ thomas - notei o nome da unidade de manutenção de estoque antes de fazer a pergunta, mas isso parecia muito fácil, acho que minha suspeita inicial estava correta.

Sean Perkins
fonte

Respostas:

18

Isso pode ser feito através do WMI (acessado através do PowerShell no meu exemplo abaixo). Tudo o que estou fazendo é olhar para uma propriedade ("SKUNAME") do serviço SQL Server, por meio da SqlServiceAdvancedPropertyclasse Observe que existem algumas variáveis ​​específicas do ambiente que precisam ser definidas de acordo na parte superior do 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
            }
        }}

Da mesma forma, essas mesmas informações podem ser encontradas diretamente na ferramenta SQL Server Configuration Manager. Depois de abri-lo, clique com o botão direito do mouse no serviço SQL Server e vá para Propriedades . Em seguida, clique na guia Avançado e observe a chave Nome da unidade de manutenção de estoque . Lá você encontrará a edição que está usando.

Thomas Stringer
fonte
23

Você pode tentar a ferramenta de linha de comando:

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

Se o serviço do SQL Server estiver em execução (com base na sua descrição), verifique o log de erros do SQL Server. Você não precisa do SSMS instalado para fazer isso, pois é apenas um arquivo de texto. O local do arquivo pode variar dependendo de como foi instalado, mas o Books Online mostra o local padrão aqui .

A primeira entrada no log deve conter as informações de versão / edição.

Edit: Apesar do comentário na pergunta acima, isso certamente indica a edição:

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
fonte
12

Resposta rápida

Basta executar o seguinte:

{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 sempre funciona, ao contrário das outras soluções que não funcionam quando:

  • você não deseja escrever um programa (por exemplo, PowerShell)?
  • as ferramentas cliente não foram instaladas (necessário para usar o SQLCMD.EXE)?
  • Não há arquivo de log do SQL Server ou não há nenhum arquivo de log que contenha eventos de inicialização / reinicialização?
  • O SQL Server não está em execução (portanto, SELECT @@VERSION;não é uma opção)?

Exemplo 1
Se você tiver apenas uma única instância instalada, não precisará usar a -sopção:

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

Devoluções:

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

Exemplo 2
Se você tiver várias instâncias instaladas na máquina, também precisará usar a -sopção para especificar em qual instância está interessada; caso contrário, poderá misturar informações da versão:

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

Devoluções:

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

informação adicional

A maneira mais rápida, fácil e confiável de determinar as informações de versão de um programa é simplesmente solicitar essas informações ao programa. A maioria dos programas ( * .COM e * .EXE ) possui uma opção / sinalizador / parâmetro / opção / dealy-ma-bob da linha de comando que exibe informações de ajuda e / ou versão.

Dependendo do programa em si, a opção de linha de comando será prefixada com um dos seguintes:

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

E, novamente, dependendo do programa em si, a opção de linha de comando será uma das seguintes:

  • Mais comum:
    • v
    • versão
  • Às vezes, incluído nas informações gerais da ajuda:
    • ?
    • h
    • Socorro

{Exemplos do SQL Server mostrados acima}

O utilitário de linha de comando SQLCMD.EXE, por outro lado, usa a -vopção para passar valores variáveis ​​para o script SQL, portanto, ele exibe apenas as informações da versão em sua exibição geral:

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]

O Bloco de notas, no entanto, possui apenas um conjunto muito limitado de opções de linha de comando e nenhuma delas exibe informações da versão.


Métodos alternativos e sem complicações:

  • Verifique o registro:

    Chave: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ {VersionNumber} \ Tools \ Setup
    Nome: Edição

    • Se você souber o número da versão (por exemplo, SQL Server 2012 = 110, SQL Server 2014 = 120, etc), poderá editar o Edition especificamente executando o seguinte em um prompt de comando:

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

      Retorna uma entrada semelhante à seguinte:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\Tools\Setup
          Edition    REG_SZ    Developer Edition
    • Se você deseja ver a Edição para o que quer que esteja instalado, execute o seguinte em um prompt de comando:

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

      Retorna uma ou mais entradas semelhantes às mostradas acima e as seguintes:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\Setup
          Edition    REG_SZ    Express Edition
  • Verifique o log de instalação:

    C: \ Arquivos de programas \ Microsoft SQL Server \ {SQL Server versão: 110, 120, etc} \ Setup Bootstrap \ Log \ {date_time} \ Detail.txt

    Para a cadeia "IsExpressSku":

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

Solomon Rutzky
fonte