4

WMI を使用して VBScript で SQL Server インストールのエディションを取得する方法を知っている人はいますか (バージョンは気にしません)。

レジストリを使用してみました (ただし、インスタンス名と SQL Server のバージョンを知っている必要があります。

SQL クエリを使用してみました (ただし、データベースに対する権限が必要であり、私のプロセスは SQL Server DBMS に対する権限のない LOCAL ユーザーを使用しています)。

そのため、WQL を使用して WMI を照会する必要があります。

私はする必要があると思います:

1) インスタンス名を取得するために、WMI オブジェクト (どのオブジェクト) にクエリを実行します。2) 次に、インスタンスごとに別のオブジェクトをクエリし、そこからエディションを取得します。

Microsoft のドキュメントを調べましたが、使用するオブジェクトが見つかりません。

誰でも助けることができますか?

クワイエットレニ

4

2 に答える 2

2

ここから開始:方法:VBScriptを使用してSQLServerサービスの詳細プロパティを変更する

最初のサンプル:

set wmi = GetObject("WINMGMTS:\\.\root\Microsoft\SqlServer\ComputerManagement10")
for each prop in wmi.ExecQuery("select * from SqlServiceAdvancedProperty where SQLServiceType = 1 AND PropertyName = 'VERSION'")
    WScript.Echo prop.ServiceName & " " & prop.PropertyName & ": " & prop.PropertyStrValue
next

あなたが求めたことをしているようです。バージョン2008を使用していない場合は、「その他のバージョン」にチェックを入れてください。

于 2012-12-03T20:59:45.997 に答える
2

ありがとうございます。これが私が作成したスクリプトです。私の立場にある他の誰かに役立つことを願っています:

Dim strValueName, strSKUName, strEdition, strVersion, strArchitecture 
Dim objWMI, objProp

On Error Resume Next
' First try SQL Server 2008/2008 R2:
Set objWMI = GetObject("WINMGMTS:\\.\root\Microsoft\SqlServer\ComputerManagement10")
If Err.Number <> 0 Then
    ' Next, try SQL Server 2005:
    Set objWMI = GetObject("WINMGMTS:\\.\root\Microsoft\SqlServer\ComputerManagement")
    If Err.Number <> 0 Then
        ' Next, try SQL Server 2012:
        Set objWMI = GetObject("WINMGMTS:\\.\root\Microsoft\SqlServer\ComputerManagement11")
    End If
End If


If Err.Number = 0 Then

    On Error Goto 0
    ' Go through the properties (which is just one) and find the name of the SKU.
    For Each objProp In objWMI.ExecQuery("select * from SqlServiceAdvancedProperty where SQLServiceType = 1 AND (PropertyName = 'SKUNAME' OR PropertyName = 'VERSION')")
        If objProp.PropertyName = "SKUNAME" THEN
            strSKUName = objProp.PropertyStrValue
        Else
            strVersion = objProp.PropertyStrValue
        End If
    Next

    ' We do not want the number of bits, so chop it off!
    If Instr(strSKUName, " (") <> 0 Then
        strEdition = Left(strSKUName, Instr(strSKUName, " ("))
        strArchitecture = "64-bit"
    Else
        strEdition = strSKUName
        strArchitecture = "32-bit"
    End If


    WScript.Echo strEdition & " / " & strSKUName & " / " & strArchitecture

End If
于 2012-12-04T10:11:41.943 に答える