Typ monitorování horní meze datového skladu

Microsoft.ServiceManager.DataWarehouse.HighWaterMarkMonitorType (UnitMonitorType)

Sleduje změnu hodnoty horní meze poskytované datovým skladem.

Element properties:

RunAsDefault
AccessibilityPublic
Support Monitor RecalculateFalse

Member Modules:

ID Module Type TypeId RunAs 
DBProbe DataSource Microsoft.SystemCenter.ServiceManager.Monitoring.OledbProbe Default
Script ProbeAction Microsoft.Windows.ScriptPropertyBagProbe Default
CDError ConditionDetection System.ExpressionFilter Default
CDHealthy ConditionDetection System.ExpressionFilter Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
IntervalSecondsint$Config/Interval$Interval (sekundy)Interval provádění v sekundách
SyncTimestring$Config/SyncTime$Čas synchronizaceŘetěze, který určuje, kdy se má monitorování spustit. Je zadaný jako hh:mm.
TimeoutSecondsint$Config/Timeout$Časový limit (sekundy)Časový limit modulu v sekundách
DatabaseNamestring$Config/DatabaseName$Název databázeNázev databáze
DatabaseServerstring$Config/DatabaseServer$Databázový serverNázev serveru, který databázi hostuje.

Source Code:

<UnitMonitorType ID="Microsoft.ServiceManager.DataWarehouse.HighWaterMarkMonitorType" Accessibility="Public">
<MonitorTypeStates>
<MonitorTypeState ID="Healthy" NoDetection="false"/>
<MonitorTypeState ID="Unhealthy" NoDetection="false"/>
</MonitorTypeStates>
<Configuration>
<xsd:element minOccurs="1" name="Interval" type="xsd:integer"/>
<xsd:element minOccurs="1" name="SyncTime" type="xsd:string"/>
<xsd:element minOccurs="1" name="Timeout" type="xsd:integer"/>
<xsd:element minOccurs="1" name="DatabaseName" type="xsd:string"/>
<xsd:element minOccurs="1" name="DatabaseServer" type="xsd:string"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="IntervalSeconds" Selector="$Config/Interval$" ParameterType="int"/>
<OverrideableParameter ID="SyncTime" Selector="$Config/SyncTime$" ParameterType="string"/>
<OverrideableParameter ID="TimeoutSeconds" Selector="$Config/Timeout$" ParameterType="int"/>
<OverrideableParameter ID="DatabaseName" Selector="$Config/DatabaseName$" ParameterType="string"/>
<OverrideableParameter ID="DatabaseServer" Selector="$Config/DatabaseServer$" ParameterType="string"/>
</OverrideableParameters>
<MonitorImplementation>
<MemberModules>
<DataSource ID="DBProbe" TypeID="Microsoft.SystemCenter.ServiceManager.Monitoring.OledbProbe">
<IntervalSeconds>$Config/Interval$</IntervalSeconds>
<SyncTime>$Config/SyncTime$</SyncTime>
<ConnectionString>Provider=SQLNCLI11;Server=$Config/DatabaseServer$;Database=$Config/DatabaseName$;Integrated Security=SSPI</ConnectionString>
<Query>SELECT dbo.fn_GetEntityChangeLogGroomingWatermark() AS HighWaterMark</Query>
<GetValue>true</GetValue>
<IncludeOriginalItem>true</IncludeOriginalItem>
<OneRowPerItem>true</OneRowPerItem>
</DataSource>
<ProbeAction ID="Script" TypeID="Windows!Microsoft.Windows.ScriptPropertyBagProbe">
<ScriptName>SCSM2012DWHighWaterMark.vbs</ScriptName>
<Arguments>$Data/Columns/Column[1]$</Arguments>
<ScriptBody><Script>'*************************************************************************
' ScriptName: SCSM2012DWHighWaterMark.vbs
'
' Purpose - Detect if the High Watermark value of the DW has correctly changed.
'
' Parameters 0 - Host Computer Principal Name
'*************************************************************************
Option Explicit
SetLocale("en-us")
Dim oAPI,strKeyRoot,principalName, oBag, iHighWaterMark


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

If WScript.Arguments.Count &lt;&gt; 1 then
Call oAPI.LogScriptEvent("SCSM2012DWHighWaterMark.vbs", 3000, 4, "OLEDB probe did not retrieve the High Watermark value from the DB. Terminating Script.")
Call oBag.AddValue("Status", "ERROR")
Call oBag.AddValue("MessageText","OLEDB probe did not return the High Watermark value from the DW Database. Check connectivity and Run As Profile configuration.")
Call oAPI.Return(oBag)
WScript.Quit()
End If
iHighWaterMark = CInt(WScript.Arguments(0))

'Call oAPI.LogScriptEvent("SCSM2012DWHighWaterMark.vbs", 3000, 4, "Starting query of High Watermark Value")

Dim oReg, iResult
Set oReg = GetObject("winmgmts:\\.\root\default:StdRegProv")
If Err &lt;&gt; 0 Then
Call oAPI.LogScriptEvent("SCSM2012DWHighWaterMark.vbs", 3000, 4, "Unable to bind to WMI registry provider. Terminating Script.")
Call oAPI.Return(oBag)
WScript.Quit
End if
Const HKLM = &amp;H80000002

If iHighWaterMark &lt;&gt; 0 then

Dim iValue1, iValue2, iValue3
strKeyRoot = "SOFTWARE\Microsoft\Microsoft Operations Manager\3.0"
'Attempt to write key, if it already exists existing content is preserved.
iResult = oReg.CreateKey(HKLM, strKeyRoot &amp; "\SCSMMP")
If iResult = 0 then
Dim strValueName, arrValues
strValueName = "HighWaterMarkDeltas"
iResult = oReg.GetMultiStringValue(HKLM,strKeyRoot &amp; "\SCSMMP",strValueName,arrValues)
If iResult = 2 then
arrValues = Array(CStr(0),CStr(0),CStr(iHighWaterMark))
iResult = oReg.SetMultiStringValue(HKLM,strKeyRoot &amp; "\SCSMMP",strValueName,arrValues)
If iResult = 0 then
Call oBag.AddValue("Status", "OK")
Call oBag.AddValue("MessageText","Deltas for the High Watermark do not exist. Storing todays value of " &amp; iHighWaterMark)
Else
Call oBag.AddValue("Status", "ERROR")
Call oBag.AddValue("MessageText","Error Storing delta values for High Watermark at " &amp; strKeyRoot &amp; "\SCSMMP\" &amp; strValueName)
End If
ElseIf iResult = 0 then
iValue1 = CInt(arrValues(0))
iValue2 = CInt(arrValues(1))
iValue3 = CInt(arrValues(2))
arrValues = Array(CStr(iValue2),CStr(iValue3),CStr(iHighWaterMark))
iResult = oReg.SetMultiStringValue(HKLM,strKeyRoot &amp; "\SCSMMP",strValueName,arrValues)
If iResult = 0 then
If iHighWaterMark &gt; iValue2 then
Call oBag.AddValue("Status", "OK")
Call oBag.AddValue("MessageText","Value of " &amp; iHighWaterMark &amp; " is higher than " &amp; iValue2)
Else
Call oBag.AddValue("Status", "ERROR")
Call oBag.AddValue("MessageText","Value of " &amp; iHighWaterMark &amp; " is not higher than " &amp; iValue2)
End if
Else
Call oBag.AddValue("Status", "ERROR")
Call oBag.AddValue("MessageText","Error Storing delta values for High Watermark at " &amp; strKeyRoot &amp; "\SCSMMP\" &amp; strValueName)
End If
Else
Call oBag.AddValue("Status", "ERROR")
Call oBag.AddValue("MessageText","Error Retrieving delta values for High Watermark at " &amp; strKeyRoot &amp; "\SCSMMP\" &amp; strValueName)
End If
Else
Call oBag.AddValue("Status", "ERROR")
Call oBag.AddValue("MessageText","Could not Create key in registry to store delta values at " &amp; strKeyRoot &amp; "\SCSMMP")
End if
Else
Call oBag.AddValue("Status", "ERROR")
Call oBag.AddValue("MessageText","Could not retrieve High Watermark from Datawarehouse database.")
End if

Call oAPI.Return(oBag)
'Call oAPI.LogScriptEvent("SCSM2012DWHighWaterMark.vbs", 3000, 4, "Finishing HighWaterMark Script.")
WScript.Quit()</Script></ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
</ProbeAction>
<ConditionDetection ID="CDHealthy" TypeID="System!System.ExpressionFilter">
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='Status']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">OK</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</ConditionDetection>
<ConditionDetection ID="CDError" TypeID="System!System.ExpressionFilter">
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='Status']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">ERROR</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</ConditionDetection>
</MemberModules>
<RegularDetections>
<RegularDetection MonitorTypeStateID="Healthy">
<Node ID="CDHealthy">
<Node ID="Script">
<Node ID="DBProbe"/>
</Node>
</Node>
</RegularDetection>
<RegularDetection MonitorTypeStateID="Unhealthy">
<Node ID="CDError">
<Node ID="Script">
<Node ID="DBProbe"/>
</Node>
</Node>
</RegularDetection>
</RegularDetections>
</MonitorImplementation>
</UnitMonitorType>