任何人都可以将我指向一个 vbscript(使用 WMI)来找出已安装的 SQL Server 版本。我有一个场景,可以在一台机器上安装 SQL Server 2008 R2 或 SQL Server 2012。
问问题
7710 次
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?
UPDATE给出了使用注册表的 OP 解决方案,并假设可以安装 2008R2 或 2012 中的一个:
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 回答