У меня есть сценарий .vbs, который выполняет следующий запрос sql: Select COUNT (*) from sys.objects
Который подсчитывает строки из вывода запроса sql: https://i.stack.imgur.com/wduXW.png[1]
И если есть найденные строки (> 0). создать оповещение в SCOM, используя среду выполнения сценариев PropertyBag в SCOM.
Проблема в том, что при отладке скрипта (используя cscript) я получаю следующее сообщение об ошибке:
(11,1) Поставщик Microsoft OLE DB для драйверов ODBC: [Microsoft] [драйвер ODBC SQL Server] [общая память] SQL Server не существует или доступ запрещен.
Хотя строка подключения кажется правильной:
strConnection = "Драйвер = {SQL Server}; Сервер = SCOMSRVDB01; База данных = 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 = "Драйвер = {SQL Server}; Сервер = SCOMSRVDB01,2880; База данных = DBABee; Trusted_Connection = TRUE"
Скрипт возвращает следующую ошибку:
(23,17) ADODB.Recordset: элемент не может быть найден в коллекции, соответствующей запрошенному имени или порядковому номеру.
objRS.Fields("No column name")
- person Jen R   schedule 21.03.2018