2012-05-24 49 views
1

我得到Incorrect Syntax Near ')'VBS錯誤,無法使用WMI服務執行查詢?

它引用的行是最後的oCN.Execute(sSQL)

在句法上,如果我刪除For Each objItem in colItems中的任一行,它不會引發錯誤。

是不可能使用WMI服務中的對象執行SQL查詢?或者我在其他地方犯了一個錯誤?

我可以根據要求列出更多的代碼;我現在想保持簡單。

Set oCN = CreateObject("ADODB.connection") 
sCN = "Provider=SQLOLEDB; Data Source=" & oRS("sql_server_instance") & ";Initial Catalog=master;Integrated Security=SSPI;" 
oCN.Open sCN 

'Gather disk information from WMI Service 
Set oWMIService = GetObject("winmgmts:\\" & oRS("sql_server") & "\root\cimv2") 
Set colItems = oWMIService.ExecQuery _ 
    ("Select * From Win32_Volume") 

'Loop through all disks  
For Each objItem in colItems 

sSQL="insert into HDS_DBA_DB.[dbo].[TEMP_disk_info_table] (drive_letter, capacity) " &_ 
"values('" & objItem.DriveLetter & "'," & objItem.Capacity & ")" 

oCN.Execute(sSQL) 

Next 

回答

2

現在看來,似乎這個問題是在objItem.Capacity財產,檢查此屬性的值前插入,因爲該值可以是空的,併產生了不正確的SQL語句像

insert into HDS_DBA_DB.[dbo].[TEMP_disk_info_table] (drive_letter, capacity) values ('E:',) 
+0

正確。語法錯誤必須在SQL的最後。條件檢查空白條目解決了這個問題。非常感謝你。 –

+0

沒問題,很高興爲您效勞。 – RRUZ

0

我相信在ADODB.Connection對象上使用.Execute用於檢索結果。

您是否嘗試過使用ADODB.Command對象?

Set cmd = CreateObject("ADODB.Command") 
cmd.ActiveConnection = oCN 

cmd.CommandType = 1 
cmd.CommandText = sSQL 

cmd.Execute(); 
+0

您可以使用object.Execute執行語句。但是,謝謝你的建議。 –