Function GenerateConnectionStr (server, db)
SecureInputStr = wscript.stdin.readline()
if (len(SecureInputStr) < 6) then
GenerateConnectionStr = "Provider=SQLOLEDB;Data Source='" & DBSource & "';Trusted_Connection=Yes;Initial Catalog='" + DBName + "';"
else
a = split(SecureInputStr, """ """)
UserName = right(a(0), len(a(0)) - 1)
Password = left(a(1), len(a(1)) - 1)
GenerateConnectionStr = "Provider=SQLOLEDB;Data Source='" & DBSource & "';Initial Catalog='" + DBName + "';" + "User Id='" + username + "';Password='" + password + "';"
end if
end Function
Function GetIncompleteJob(conection, oAPI)
Set objRecordSet = CreateObject("ADODB.Recordset")
objRecordSet.Open "select * from dbo.tbl_BaseJobInfo where eBaseJobLastResult = 2", conection, adOpenStatic, adLockOptimistic
do until objRecordSet.EOF
date1 = cdate(objRecordSet("dtLastRunTimeUTC"))
if (Datediff("n", date1, nd) < BackStartTime) and (Datediff("n", date1, nd) > BackDuration) then
str = str + "JOB " & objRecordSet("idRowID") & " started at " & objRecordSet("dtLastRunTimeUTC") & " and didn't not finish yet!" + vbcrlf
For i = 0 To objRecordSet.Fields.Count -1
strContent = strContent + objRecordSet.Fields(i).Name + " : " + cstr(objRecordSet(objRecordSet.Fields(i).Name)) + vbcrlf
Next
end if
objRecordSet.movenext
loop
if str <> "" then
Set oBag = oAPI.CreateTypedPropertyBag(1)
oBag.AddValue "EventID" , 100
oBag.AddValue "PublisherName" , "Enterprise Random Password Manager MP"
oBag.AddValue "Channel" , "Job"
oBag.AddValue "EventLevel" , 1
oBag.AddValue "EventDescription" , str + vbcrlf + strContent
oAPI.AddItem oBag
else
Set oBag = oAPI.CreateTypedPropertyBag(1)
oBag.AddValue "EventID" , 0
oBag.AddValue "PublisherName" , "Enterprise Random Password Manager MP"
oBag.AddValue "Channel" , "Job"
oBag.AddValue "EventLevel" , 4
oAPI.AddItem oBag
end if
objRecordset.Close
End Function
Function GetAutorollJob(connection, oAPI)
Set objRecordSet = CreateObject("ADODB.Recordset")
objRecordSet.Open "select * from dbo.tbl_BaseJobInfo where sComment LIKE 'Auto-roll%'", Connection, adOpenStatic, adLockOptimistic
do until objRecordSet.EOF
date1 = cdate(objRecordSet("dtNextRunTimeUTC"))
if (Datediff("n", date1, nd)< BackStartTime ) and (Datediff("n", date1, nd) > BackEndTime) and (objRecordSet("eBaseJobLastResult") <> 6) then
str = str + "Autoroll JOB " & objRecordSet("idRowID") & " started at " & objRecordSet("dtNextRunTimeUTC") & " and didn't not finish yet!" + vbcrlf
For i = 0 To objRecordSet.Fields.Count -1
strContent = strContent + objRecordSet.Fields(i).Name + " : " + cstr(objRecordSet(objRecordSet.Fields(i).Name)) + vbcrlf
Next
end if
objRecordSet.movenext
loop
if str <> "" then
Set oBag = oAPI.CreateTypedPropertyBag(1)
oBag.AddValue "EventID" , 100
oBag.AddValue "PublisherName" , "Enterprise Random Password Manager MP"
oBag.AddValue "Channel" , "Autoroll Job"
oBag.AddValue "EventLevel" , 1
oBag.AddValue "EventDescription" , str + vbcrlf + strContent
oAPI.AddItem oBag
else
Set oBag = oAPI.CreateTypedPropertyBag(1)
oBag.AddValue "EventID" , 0
oBag.AddValue "PublisherName" , "Enterprise Random Password Manager MP"
oBag.AddValue "Channel" , "Autoroll Job"
oBag.AddValue "EventLevel" , 4
oAPI.AddItem oBag
end if
objRecordset.Close
End Function
time1 = now()
Set objParameters = WScript.Arguments
DBSource = objParameters(0)
DBName = objParameters(1)
MaxJobLength = cint(objParameters(2))
BackStartTime = MaxJobLength + 5
BackDuration = MaxJobLength 'run this rule every 5 minutes
Set oAPI = CreateObject("MOM.ScriptAPI")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open GenerateConnectionStr(DBSource, DBName)
if err.number <> 0 then
Set oBag = oAPI.CreateTypedPropertyBag(1)
oBag.AddValue "EventID" , 0
oBag.AddValue "PublisherName" , "Enterprise Random Password Manager MP"
oBag.AddValue "Channel" , "Database Connection Failure"
oBag.AddValue "EventLevel" , 1
oAPI.AddItem oBag
else
GetAutorollJob objConnection,oAPI
GetIncompleteJob objConnection,oAPI
objConnection.Close
end if