-3

インストールされている SQL Server のバージョンを確認するために、vbscript (WMI を使用) を教えてもらえますか。SQL Server 2008 R2 または SQL Server 2012 をマシンにインストールできるシナリオがあります。

4

1 に答える 1

2

ここの最初のGoogle検索結果のコードに基づく:

Dim WMI, Col, Prod, Q
Set WMI = GetObject("WinMgmts:")
Q = "Select * FROM Win32_Product WHERE Vendor = " & _
    "'Microsoft Corporation' AND Name LIKE 'SQL Server%Database Engine Services'"
Set Col = WMI.ExecQuery(Q)
For Each Prod in Col
  if left(Prod.version, 3) = "11." then
    msgbox "SQL Server 2012 was found!" & vbCrLf & prod.version
  elseif left(Prod.version, 4) = "10.5" then
    msgbox "SQL Server 2008 R2 was found!" & vbCrLf & prod.version
  end if
Next
Set Col = Nothing
Set WMI = Nothing

WMIはこれを行うための最速の方法ではないことに注意してください。WMIを経由せずに、レジストリを直接確認することを検討しましたか?

代わりにレジストリを使用し、2008R2または2012のいずれかをインストールできると仮定して、OPのソリューションを更新します。

RegKey2012 = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\" & _
             "Microsoft SQL Server\MSSQL11.MSSQLSERVER\"
If RegKeyExists(RegKey2012) Then 
  WScript.StdOut.Write("2012") 
Else 
  WScript.StdOut.Write("2008R2") 
End If 

Function RegKeyExists(Key) 
  Dim oShell, entry 
  On Error Resume Next 
  Set oShell = CreateObject("WScript.Shell") 
  entry = oShell.RegRead(Key) 
  If Err.Number <> 0 Then 
    Err.Clear 
    RegKeyExists = False 
  Else 
    Err.Clear 
    RegKeyExists = True 
  End If 
End Function
于 2013-01-16T16:54:58.317 に答える