Eine SQL-Abfrage liefert eine Kennzahl, und Operations Manager soll bei Überschreitung alarmieren. Zwei Wege: die OLE-DB-Vorlage mit Bordmitteln oder ein PowerShell-Monitor mit Property Bag.
Ein häufiger Wunsch im Betrieb: Eine fachliche Kennzahl steht in einer Datenbank – etwa die Anzahl offener Aufträge, die Länge einer Warteschlange oder das Alter des letzten Imports. Operations Manager soll diesen Wert regelmäßig abfragen und Alarm schlagen, sobald ein Schwellwert überschritten wird. Dafür gibt es zwei Wege.
Weg 1: Die OLE-DB-Vorlage
Mit Bordmitteln geht es über Authoring › Management Pack Templates › OLE DB Data Source. Der Assistent fragt Verbindungszeichenfolge, Abfrage (Query to execute) und die überwachenden Systeme ab.
Der Haken: Die Vorlage überwacht vor allem Erreichbarkeit und Antwortzeiten (Verbindungszeit, Abfragedauer, Abrufzeit). Den Inhalt des Ergebnisses mit eigenen Schwellwerten zu vergleichen, sieht sie nicht vor. Für reine Verfügbarkeitsprüfungen ist sie ideal, für fachliche Kennzahlen nicht.
Weg 2: PowerShell-Skript mit Property Bag
Flexibler ist ein Monitor auf Basis eines PowerShell-Skripts. Das Skript führt die Abfrage aus und übergibt das Ergebnis über einen Property Bag an SCOM. Der Monitor wertet den Wert anschließend aus.
param([string]$DBServer, [string]$Database)
$api = New-Object -ComObject 'MOM.ScriptAPI'
$bag = $api.CreatePropertyBag()
$conn = New-Object System.Data.SqlClient.SqlConnection(
"Server=$DBServer;Database=$Database;Integrated Security=True")
try {
$conn.Open()
$cmd = $conn.CreateCommand()
$cmd.CommandText = 'SELECT COUNT(*) FROM dbo.Auftraege WHERE Status = ''offen'''
$value = [int]$cmd.ExecuteScalar()
$bag.AddValue('Value', $value)
$bag.AddValue('State', $(if ($value -gt 500) { 'Critical' } elseif ($value -gt 200) { 'Warning' } else { 'Healthy' }))
}
catch {
$bag.AddValue('Value', -1)
$bag.AddValue('State', 'Critical')
$bag.AddValue('Error', $_.Exception.Message)
}
finally {
$conn.Close()
}
$bag
Im Monitor (z. B. ein Timed PowerShell Script Three State Monitor aus einem Community- oder eigenen Management Pack) prüfen Sie dann Property[@Name='State'] auf Healthy, Warning oder Critical. Alternativ geben Sie nur den Wert zurück und legen die Schwellwerte im Monitor selbst fest – dann lassen sie sich später per Override anpassen, ohne das Skript zu ändern.
Tipp
Soll der Wert zusätzlich im Zeitverlauf sichtbar sein, legen Sie eine Performance-Collection-Regel mit demselben Skript an. So entstehen Diagramme und Berichte, und Sie erkennen Trends, bevor der Schwellwert erreicht ist.
Welcher Weg ist der richtige?
| Anforderung | Empfehlung |
|---|---|
| Ist die Datenbank erreichbar, antwortet sie schnell genug? | OLE-DB-Vorlage |
| Fachliche Kennzahl mit Schwellwerten | PowerShell-Monitor mit Property Bag |
| Kennzahl zusätzlich als Trend/Report | PowerShell-Monitor plus Performance-Regel |
Heute
Beide Wege funktionieren unverändert in Operations Manager 2019, 2022 und 2025. Achten Sie darauf, dass das ausführende Run As-Konto Leserechte auf der Zieldatenbank besitzt – das ist die häufigste Fehlerquelle bei solchen Monitoren.