SSMSがインストールされていないSQL Serverのバージョン/エディションを見つけるにはどうすればよいですか?


20

管理スタジオをインストールせずに、どのエディションがインストールされているかを調べるにはどうすればよいですか?別のソフトウェアのライセンスマネージャーとして機能するサーバーがあります。高いRAM使用率のアラートを調査すると、sqlservr.exeプロセスがほぼ2 GBのRAMを使用していることがわかりました。

プログラムメニューを見てみると、構成マネージャーがインストールされていることがわかりました。EXEファイルのプロパティをクリックして10.50.1600.1を見つけましたが、Express、Dev、STN、ENTなどであるかどうかを示す場所は見つかりませんでした。

私が推測しなければならなかった場合、これはエクスプレス版ですが、明白な物語の兆候があるかどうかを知りたかったです。

更新:@Bob-ファイルはエディションではなく、私が知っていることを教えてくれます。

@valo-そのコマンドを実行すると次のエラーが発生し、名前付きパイプが有効になっていることを確認しました。

HResult 0x35、レベル16、状態1名前付きパイププロバイダー:SQL Server [53]への接続を開けませんでした。Sqlcmd:エラー:Microsoft SQL Server Native Client 10.0:SQL Serverへの接続の確立中にネットワーク関連またはインスタンス>特定のエラーが発生しました。サーバーが見つからないか、アクセスできません。インスタンス名が正しいかどうか、およびSQL Serverがリモート接続を許可するように構成されているかどうかを確認します。詳細については、SQL Server Books Onlineを参照してください。Sqlcmd:エラー:Microsoft SQL Server Native Client 10.0:ログインタイムアウトが切れました。

@thomas- 質問をする前に在庫管理単位名に気づきましたが、それは簡単すぎるようでした。最初の疑念は正しかったと思います。

回答:


18

これは、WMIを介して実行できます(以下の例のPowerShellを使用してアクセスします)。私がしているのは、SqlServiceAdvancedPropertyクラスを介してSQL Serverサービスのプロパティ( "SKUNAME")を調べることだけです。コードの先頭でそれに応じて設定する必要がある環境固有の変数がいくつかあります。

$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
インスタンスが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があります。

プログラム自体に応じて、コマンドラインスイッチの先頭に次のいずれかが付きます。

  • [なし/ n]
  • -
  • -
  • /

また、プログラム自体に応じて、コマンドラインスイッチは次のいずれかになります。

  • ごくありふれた:
    • v
    • バージョン
  • 一般的なヘルプ情報に含まれることもあります:
    • h
    • 助けて

{上記の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]

ただし、メモ帳には非常に限られたコマンドラインスイッチのセットしかなく、バージョン情報を表示するものはありません。


代替の簡単な方法:

  • レジストリを確認します。

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

    • バージョン番号がわかっている場合(たとえば、SQL Server 2012 = 110、SQL Server 2014 = 120など)、コマンドプロンプトで次のコマンドを実行して、そのエディションを具体的に確認できます。

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

      次のようなエントリを1つ返します。

      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

      上記のエントリに類似した1つ以上のエントリを返します。

      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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.