2012-12-03 1 views
4

VBScript에서 WMI를 사용하여 SQL Server 설치 버전 (버전은 상관하지 않음)을 얻는 방법을 아는 사람이 있습니까?SQL Server 인스턴스 버전을 찾는 WQL 쿼리가있는 사람 있습니까?

나는 레지스트리를 사용하여 시도했다 (하지만 인스턴스 이름과 SQL Server의 버전을 알고 당신이 필요합니다. 내가 SQL 쿼리를 사용하여 시도

(하지만 데이터베이스에 권한이 할 필요 . 내 프로세스가 SQL 서버 DBMS에 아무런 권한)으로, 로컬 사용자를 사용하고 그래서

, I는 WMI를 쿼리 WQL을 사용하여 왼쪽하고

을 내가 할 필요가 같아요.

1) WMI 개체를 쿼리합니다 (하나)를 사용하여 인스턴스 이름을 가져옵니다. 2) 그런 다음 각 인스턴스에 대해 다른 개체를 쿼리하고 해당 개체를 밖으로 가져옵니다.

Microsoft 문서를 살펴본 결과 사용할 개체를 찾을 수 없습니다.

아무도 도와 줄 수 있습니까?

QuietLeni 여기

답변

2

시작 : How to: Modify SQL Server Service Advanced Properties using VBScript

첫 번째 샘플 :

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을 사용하지 않는 경우 "기타 버전"을 선택하십시오.

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 
관련 문제