2013-01-16 1 views
-3

누구나 vbscript (WMI 사용)를 사용하여 설치된 SQL Server 버전을 찾을 수 있습니까? SQL Server 2008 R2 또는 SQL Server 2012를 컴퓨터에 설치할 수있는 시나리오가 있습니다. the first Google search result here의 코드를 기반으로SQL Server 버전을 찾으려면 WMI를 사용하는 VBScript

+3

당신은 무엇을 시도? 그런 스크립트를 검색 했습니까? 두 버전 모두 설치되었거나 (예 : 2005 또는 2008) 버전이 없거나 전혀 SQL Server가없는 경우 무엇을하고 싶습니까? –

+0

나는 인터넷 검색을 시도했다. .. 찾을 수 없다. 내 시나리오는 - 유일한 버전 만 설치 될 것이다. 2008 년 또는 2012 년. – Subhasis

+2

매우 열심히 시도하지 못했습니다. 나는 "vbscript wmi는 SQL 서버의 버전을 찾았습니다."라고 말하면서 가장 첫 방문했습니다. https://groups.google.com/forum/?fromgroups=#!topic/microsoft.public.scripting.wsh/MNtfPYXZhIA –

답변

2

: WMI이 작업을 수행하는 가장 빠른 방법이 아니라고

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를 거치지 않고 레지스트리를 직접 확인해 보셨습니까?

UPDATE 대신 레지스트리를 사용하여 영업 이익의 솔루션을 제공하고, 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 
+0

forx 스크립트를 정렬하는 중 ... 설치 프로그램에서 스크립트를 추가해야하므로 모든 방법을 사용할 수 있습니다 ... 레지스트리 경로를 사용하는 것이 좋습니다 ... – Subhasis

+1

@Subhasis 레지스트리가 아마도 더 좋을 것입니다. . WMI는 VBScript로 인해 속도가 느릴뿐 아니라 다양한 사용 권한 및 기타 문제가 발생하기 쉽습니다. WMI가 중단 된 여러 컴퓨터가 있습니다. –

+0

이것은 작동하는 것 같다 – Subhasis

관련 문제