Skip to main content

Monitor Output of SQL Query with SCOM using Property{@Name='State'} Script

We had a requirement to monitor the the output of a Query (Stored Procedure in our case) and the Alert based on the result it generated.


In Our case we wanted to monitor something like

SELECT statusno from XXX table 
If statusno > 0 alert = OK
Else
Alert = fail
End if

So it was like If the Output is anything but 0 we wanted an alert.

I referenced these 2 articles to create our Script based Monitor
http://systemcenter.no/?p=190
http://www.systemcentercentral.com/downloads/downloadsdetails/tabid/144/indexid/7362/default.aspx

I faced some issues where in the script gave errors and did not execute correctly.

The Script i used and that worked for us is a slight modification of one listed here http://systemcenter.no/?p=190 to suit our requirement.

******************************************************************************

Dim objCN, strConnection
Dim objAPI, oBag

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


strConnection = "Driver={SQL Server};Server=Your SQL Server Name;Database=The database you need to run this against;Trusted_Connection=TRUE"
objCN.Open strConnection

Dim strSQLQuery
strSQLQuery = "The Query"

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

Set objRS = objCN.Execute(strSQLQuery)

Do Until objRS.EOF
                'WScript.Echo objRS.Fields("Status")
                if objRS.Fields("Status") <> "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


**********************************************************************
e.g
In Our case the Query was:  Exec Sp1
Server= Server01
Database= myDB01

The expressions used during the creation of Monitors are:

Property{@Name='State'}




Another Script example , if in case we can not generate the output of the SQL query to be a Number we can use string value as well:

*****************************************************************************
Dim objCN, strConnection
Dim objAPI, oBag

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



strConnection = "Driver={SQL Server};Server=Your SQL Server Name;Database=The database you need to run this against;Trusted_Connection=TRUE"
objCN.Open strConnection


Dim strSQLQuery
strSQLQuery = "SELECT [VALUE] FROM SQLReplView "

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

Set objRS = objCN.Execute(strSQLQuery)

Do Until objRS.EOF
                'WScript.Echo objRS.Fields("VALUE")
                if objRS.Fields("VALUE") = "ALERT_ON" 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

Hope this helps

Comments

Popular posts from this blog

Group Policy Object did not apply because it failed with error code '0x80070534 No mapping between account names and security IDs was done

One of our servers was losing the Local Admin settings as we control them using GPO (restricted Groups) We were receiving the following event on this particular server : Event ID 4098 Application Event Log The computer 'Administrators (built-in)' preference item in the 'Servers Local Admins {odjd9DBD-22AF-48EA-ADF5-F42ADE4182hst}' Group Policy Object did not apply because it failed with error code '0x80070534 No mapping between account names and security IDs was done.' This error was suppressed. To fix the issue we deleted all the folders from the following location and rebooted the server C:\ProgramData\Microsoft\Group Policy\History Hope this helps.

iDRAC 7 Shows no Signal in Virtual Console Preview

Recently i logged on to iDRAC for one of our Dell R720 servers,however somehow the console redirection did not work at all. I kept on seeing No Signal on the Virtual console Preview. I tried Rebooting the server but that did not help. Finally i clicked on Reset iDRAC and this did the trick. It may take around 2 -5 minutes before you can access iDRAC page again. I had to power on the server through iDRAC before anything showed up on console. Hope this Helps.

Close Open Files in Isilon

To close Open files in Isilon Sometimes we may have to Close open files on Isilon , This is how we can accomplish it First find all the Open Files using the Following Command: isi_for_array  "isi smb openfiles list" To Narrow the search  we can grep the result  as an example isi_for_array  "isi smb openfiles list" | grep -i abc Once you find the files the 6 digit number is the id for that open file. To close the open file run the following command isi_for_array isi smb openfiles close "123456" -f Hope this helps