我正在Incorrect Syntax Near ')'
它引用的行是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
答案 0 :(得分:2)
似乎问题出在objItem.Capacity
属性中,在插入之前检查此属性的值,因为该值可能为空并且产生不正确的SQL语句,如
insert into HDS_DBA_DB.[dbo].[TEMP_disk_info_table] (drive_letter, capacity) values ('E:',)
答案 1 :(得分:0)
我相信在ADODB.Connection对象上使用.Execute是为了检索结果。
您是否尝试过使用ADODB.Command对象?
Set cmd = CreateObject("ADODB.Command")
cmd.ActiveConnection = oCN
cmd.CommandType = 1
cmd.CommandText = sSQL
cmd.Execute();