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.

DSS WSUS server fail to download Updates HTTP status 404: The requested URL does not exist on the server.

When managing a Downstream WSUS server , it may happen that when a patch is approved it tried to immediately download it form the source server (USS) Sometime we see errors in event viewer stating that the the download failed Event ID: 364 Content file download failed. Reason: HTTP status 404: The requested URL does not exist on the server. Source File: /Content/6E/72131F469F73C884B32124746BAFCA2C8E0A106E.cab Destination File: E:\WSUS\WsusContent\6E\72131F469F73C884B32124746BAFCA2C8E0A106E.cab Event ID 10032 The server is failing to download some updates. We also see following entries in softwaredistribution.log 2016-09-26 07:53:29.287 UTC Warning WsusService.3 ContentSyncAgent.ProcessBITSNotificationQueue ContentSyncAgent recieved Failure for Item: f52f0b8a-2b22-43cf-933e-af8de6b11eb6, Item fails 2016-09-26 07:53:29.287 UTC Info WsusService.3 ContentSyncAgent.ContentSyncSPFireStateMachineEvent ContentSyncAgent firing Event: FileDownloadFailed for Item: f5...

StoreFront 2.0 Propagate Changes Event ID 0 and 1 .There was no endpoint listening at net.tcp

When we add server to the Citrix storefront 2.0 server gropup , it may happen that the Propagate changes give us an error You will see the following events on the Primary StoreFront 2.0 Server Event Id 0: Error in retrieving synchronization information. Citrix.DeliveryServices.PowerShell.Command.Runner.Exceptions.PowerShellExecutionException: An error occured running the command: 'Get-DSClusterConfigurationUpdateState' ---> System.Management.Automation.ActionPreferenceStopException: Command execution stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: There was no endpoint listening at net.tcp://storefront02/Citrix/ConfigurationReplication that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details. Event Id 1: Citrix.DeliveryServices.PowerShell.Command.Runner.Exceptions.PowerShellExecutionException, Citrix.Delive...