1

我越来越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
4

2 回答 2

2

似乎问题出在objItem.Capacity属性中,在插入之前检查该属性的值,因为该值可以为空,并且会产生不正确的 SQL 语句,例如

insert into HDS_DBA_DB.[dbo].[TEMP_disk_info_table] (drive_letter, capacity) values ('E:',)
于 2012-05-24T19:34:19.943 回答
0

我相信在 ADODB.Connection 对象上使用 .Execute 是为了检索结果。

您是否尝试过使用 ADODB.Command 对象?

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

cmd.CommandType = 1
cmd.CommandText = sSQL

cmd.Execute();
于 2012-05-24T19:26:06.210 回答