HAVING-Klausel
Die HAVING-Klausel wird verwendet, um die Ereignisse zu filtern, die während des in der WITHIN-Klausel angegebenen Gruppierungsintervallsempfangen werden. Beispielsweise könnte eine SELECT-Anweisung so konstruiert werden, dass sie nichts zurückgibt, es sei denn, es gab mindestens 5 Ereignisse innerhalb der letzten 30 Sekunden INTERVALL.
Die WITHIN-Klausel folgt unmittelbar in der SELECT-Anweisung nach der GROUP Klausel. Die HAVING-Klausel arbeitet mit der NumberOfEvents--Eigenschaft der __AggregateEvent Systemklasse, deren Gruppe, die mit der GROUP-Klausel erstellt wurde, mitglied ist. Die HAVING-Klausel kann alle standardmäßigen relationalen Operatoren verwenden.
Die Syntax lautet wie folgt:
SELECT * FROM EventClass [WHERE property = value]
GROUP WITHIN interval [BY property_list]
HAVING NumberOfEvents operator constant
Der EventClass- Wert ist die Ereignisklasse, deren Ereignis Mitglied ist, und Wert ist der Wert für die Eigenschaft, für die Benachrichtigung erforderlich ist. Das Intervall ist eine nicht signierte ganze Zahl, die das Gruppierungsintervall (in Sekunden) nach dem Empfang des ersten Ereignisses darstellt. Die Eigenschaftsliste ist eine durch Trennzeichen getrennte Liste einer oder mehrerer Eigenschaften, die in der Ereignisklasse enthalten sind. Der Operator ist ein beliebiger relationaler Operator. Der Konstantenwert ist eine beliebige nicht signierte 32-Bit-Ganzzahl, die die Anzahl der ereignisse angibt, die zum Filtern verwendet werden.
Bei Verwendung der HAVING-Klausel sind die WHERE- und BY-Klauseln optional.
Die folgende Ereignisabfrage fordert an, dass Benachrichtigungen der EmailEvent- Klasse nach dem ersten Ereignis, das WMI empfängt, in 300 Sekunden gruppiert werden. Außerdem sollte die Abfrage die __AggregateEvent Instanz nur übermittelt werden, wenn WMI in 300 Sekunden mehr als fünf E-Mail-Ereignisse empfängt.
SELECT * FROM EmailEvent GROUP WITHIN 300 HAVING NumberOfEvents > 5
Im folgenden Beispiel werden alle Ereignisse gruppiert, die in 600 Sekunden (d. h. 10 Minuten) vom TargetInstance-empfangen werden.SourceName-Eigenschaft. In diesem Beispiel werden aggregierte Ereignisse nur übermittelt, wenn die Anzahl der von derselben Quelle empfangenen Win32_NTLogEvent Ereignisse 25 überschreitet. Beachten Sie, dass der ISA-Operator bewirkt, dass die TargetInstance Eigenschaft der __InstanceCreationEvent Systemklasse eine Instanz der Win32_NTLogEvent Klasse darstellt.
SELECT * FROM __InstanceCreationEvent
WHERE TargetInstance ISA "Win32_NTLogEvent"
GROUP WITHIN 600 BY TargetInstance.SourceName
HAVING NumberOfEvents > 25