无法在VBSscript中打开到SQL Server的连接字符串

时间:2018-03-21 13:37:01

标签: sql-server vbscript scom

我有一个运行以下sql查询的.vbs脚本: Select COUNT (*) from sys.objects 从sql查询输出中计算行数: https://i.stack.imgur.com/wduXW.png[1]

如果找到任何行(> 0)。使用SCOM中的PropertyBag脚本运行时在SCOM中生成警报。

问题是, 在调试脚本(使用cscript )时,我得到以下错误消息:

  

(11,1)用于ODBC驱动程序的Microsoft OLE DB提供程序:   [Microsoft] [ODBC SQL Server驱动程序] [共享内存] SQL Server不存在或访问被拒绝。

虽然连接字符串似乎是正确的:

  

strConnection =“Driver = {SQL Server}; Server = SCOMSRVDB01; Database = DBABee; Trusted_Connection = TRUE”

以下是完整的VBScript:

Dim objCN, strConnection
Dim oAPI, oBag

Set objCN = CreateObject("ADODB.Connection")
Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()



strConnection = "Driver={SQL Server};Server=SCOMSRVDB01;Database=DBABee;Trusted_Connection=TRUE"
objCN.Open strConnection

Dim strSQLQuery
strSQLQuery = "Select COUNT (*) from sys.objects"

Dim objRS
Set objRS=CreateObject("ADODB.Recordset")

Set objRS = objCN.Execute(strSQLQuery)

Do Until objRS.EOF
                'WScript.Echo objRS.Fields("No column name")
                if objRS.Fields("No column name") > 0 then
                                                                'WScript.Echo "evaluated as bad"
                                Call oBag.AddValue("State","BAD")
                                Call objAPI.Return(oBag)
                else
                                Call oBag.AddValue("State","GOOD")
                                Call objAPI.Return(oBag)
                end if
                objRS.MoveNext
Loop

objRS.Close
值得一提的是, 在我们公司,你不能没有提到端口号就连接到SQL服务器。

但是当我试图在连接字符串中添加它(端口:2880)时:

  

strConnection =“Driver = {SQL Server}; Server = SCOMSRVDB01,2880; Database = DBABee; Trusted_Connection = TRUE”

脚本返回以下错误:

  

(23,17)ADODB.Recordset:在请求的名称或序号对应的集合中找不到项目。

1 个答案:

答案 0 :(得分:1)

指示找到项目连接的ADODB错误表示您已成功连接到数据库,但无法找到您请求的列。这是无法找到的:objRS.Fields("No column name")

更改您的查询并命名列:

strSQLQuery = "Select COUNT (*) as countStuff from sys.objects"

然后改变你要找的东西:

if objRS.Fields("countStuff") > 0 then