Як знайти версію / видання SQL Server без встановленої SSMS?


20

Як дізнатися, яке видання встановлено без встановлення студії управління? У мене є сервер, який працює як менеджер ліцензій для іншого програмного забезпечення. Після розслідування високого сповіщення про використання оперативної пам’яті я виявив, що процес sqlservr.exe займає майже 2 ГБ оперативної пам’яті.

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

Якби мені довелося здогадуватися, це експрес-видання, але я хотів дізнатися, чи є явна знакова розповідь.

Оновлення: @Bob - Файл повідомляє мені те, що я знаю, а не видання.

@valo - я отримую таку помилку, коли запускаю цю команду, і я перевіряю, чи названі труби включені:

HResult 0x35, рівень 16, стан 1 Провайдер іменованих труб: Не вдалося відкрити з'єднання з SQL сервером [53]. Sqlcmd: Помилка: Native Client Microsoft SQL Server 10.0: Під час встановлення з'єднання з SQL сервером сталася помилка, пов’язана з мережею або екземпляром. Сервер не знайдено або недоступний. Перевірте, чи ім'я примірника правильне і чи налаштовано SQL Server>, щоб дозволити віддалені з'єднання. Для отримання додаткової інформації див. Книги SQL Server Online .. Sqlcmd: Помилка: Native Client 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, оскільки це лише текстовий файл. Розташування файлів може відрізнятися залежно від способу його встановлення, але Книги в Інтернеті відображаються тут за замовчуванням .

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

Редагувати: Незважаючи на коментар у вищезазначеному питанні, це, безумовно, говорить вам видання:

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 ) мають перемикач / прапор / параметр / параметр / параметр / 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 і т.д.), ви можете випустити для нього видання спеціально, виконавши в командному рядку наступне:

      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
    • Якщо у вас є, що побачити Видання для того, що буде встановлено, виконайте наступне в командному рядку:

      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: \ Програмні файли \ Microsoft SQL Server \ {Версія SQL Server: 110, 120 тощо} \ Setup Bootstrap \ Log \ {date_time} \ Detail.txt

    Для рядка "IsExpressSku":

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.