Как найти версию / выпуск SQL Server без установленной SSMS?

20

Как узнать, какая редакция установлена ​​без установки студии управления? У меня есть сервер, который работает как менеджер лицензий для другого программного обеспечения. После исследования предупреждения об использовании высокой оперативной памяти я обнаружил, что процесс sqlservr.exe занимает почти 2 ГБ оперативной памяти.

Я просмотрел меню программы и обнаружил, что менеджер конфигурации был установлен, в противном случае, он довольно голый. Я нажал на свойства файла EXE и нашел 10.50.1600.1, но я не нашел места, в котором было бы указано, что это - Express, Dev, STN, ENT и т. Д.

Если бы мне пришлось угадывать, это экспресс-издание, но я хотел знать, есть ли явные контрольные признаки.

Обновление: @Bob - Файл говорит мне, что я знаю, а не издание.

@valo - я получаю следующую ошибку, когда запускаю эту команду и проверяю, включены ли именованные каналы:

HResult 0x35, уровень 16, состояние 1 Поставщик именованных каналов: не удалось открыть соединение с SQL Server [53]. Sqlcmd: ошибка: собственный клиент Microsoft SQL Server 10.0: при установке соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром>. Сервер не> найден или недоступен. Проверьте правильность имени экземпляра и настройку SQL Server> разрешить ли удаленные подключения. Дополнительные сведения см. В электронной документации по SQL Server. Sqlcmd: ошибка: собственный клиент Microsoft SQL Server 10.0: истекло время ожидания входа.

@thomas - Я заметил название подразделения хранения склада, прежде чем задал вопрос, но это казалось слишком легким, я думаю, мое первоначальное подозрение было правильным.

Шон Перкинс
источник

Ответы:

18

Это может быть сделано через WMI (доступ через PowerShell в моем примере ниже). Все, что я делаю, это просматриваю свойство ("SKUNAME") службы SQL Server через SqlServiceAdvancedPropertyкласс. Обратите внимание, что есть несколько переменных, зависящих от среды, которые должны быть установлены соответствующим образом в верхней части кода.

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

Аналогично, эту же информацию можно найти непосредственно в инструменте диспетчера конфигурации SQL Server. Открыв его, щелкните правой кнопкой мыши службу SQL Server и перейдите в Свойства . Затем нажмите на вкладку « Дополнительно » и посмотрите на ключ « Название хранилища». Там вы найдете, какое издание вы используете.

Томас Стрингер
источник
23

Вы можете попробовать инструмент командной строки:

C:\>sqlcmd -S [SERVER] -d [DB_NAME] -E -Q "SELECT @@VERSION"
Вало
источник
18

Если служба SQL Server запущена (в зависимости от вашего описания), проверьте журнал ошибок SQL Server. Для этого вам не нужно устанавливать SSMS, так как это просто текстовый файл. Расположение файла может отличаться в зависимости от того, как он был установлен, но Books Online показывает расположение по умолчанию здесь .

Первая запись в журнале должна содержать информацию о версии / издании.

Изменить: Несмотря на комментарий в вопросе выше, это, безусловно, говорит вам издание:

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

Быстрый ответ

Просто запустите следующее:

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

Этот метод всегда работает, в отличие от других решений, которые не будут работать, когда:

  • Вы не хотите писать программу (например, PowerShell)?
  • клиентские инструменты не были установлены (необходимо использовать SQLCMD.EXE)?
  • Нет или файла журнала SQL Server, или нет файла журнала, который содержит какие-либо события запуска / перезапуска?
  • SQL Server не работает (следовательно, SELECT @@VERSION;это не вариант)?

Пример 1
Если у вас установлен только один экземпляр, вам не нужно использовать -sпереключатель:

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

Возвращает:

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

Пример 2
Если на машине установлено несколько Экземпляров, вам также нужно использовать -sпереключатель, чтобы указать, какой Экземпляр вас интересует, иначе он может смешивать информацию о версии:

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

Возвращает:

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

Дополнительная информация

Самый быстрый, простой и надежный способ определить информацию о версии программы - просто запросить эту информацию у программы. Большинство программ ( * .COM и * .EXE ) имеют переключатель командной строки / flag / parameter / option / dealy-ma-bob, который будет отображать справку и / или информацию о версии.

В зависимости от самой программы переключателю командной строки будет присвоен один из следующих префиксов:

  • [ничего / нада]
  • -
  • -
  • /

И, опять же, в зависимости от самой программы, переключатель командной строки будет одним из следующих:

  • Наиболее общий:
    • v
    • версия
  • Иногда включается в общую справочную информацию:
    • ?
    • час
    • Помогите

{Примеры SQL Server, показанные выше}

Утилита командной строки SQLCMD.EXE, с другой стороны, использует -vпереключатель для передачи значений переменных в сценарий SQL, поэтому она отображает информацию только о версии в своем общем информационном окне:

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 имеет очень ограниченный набор параметров командной строки , и ни один из них не отображает информацию о версии.


Альтернативные методы без суеты:

  • Проверьте реестр:

    Ключ: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ {VersionNumber} \ Инструменты \
    Имя установки : выпуск

    • Если вам известен номер версии (например, SQL Server 2012 = 110, SQL Server 2014 = 120 и т. Д.), Вы можете специально установить его для Edition, запустив в командной строке следующее:

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

      Возвращает одну запись, аналогичную следующей:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\Tools\Setup
          Edition    REG_SZ    Developer Edition
    • Если вам нужно увидеть, что Edition для того, что происходит, установлено, выполните в командной строке следующее:

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

      Возвращает одну или несколько записей, аналогичных показанным выше, и следующее:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\Setup
          Edition    REG_SZ    Express Edition
  • Проверьте журнал установки:

    C: \ Program Files \ Microsoft SQL Server \ {Версия SQL Server: 110, 120 и т. Д.} \ Setup Bootstrap \ Log \ {date_time} \ Detail.txt

    Для строки "IsExpressSku":

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

Соломон Руцкий
источник