Freigeben über


Definieren von Ereignisregeln

Wenn eine Anwendung ereignisgesteuerte Abonnements unterstützt, müssen Sie mindestens eine Ereignisregel definieren.

Ereignisregeln sind benannte Mengen von einer oder mehreren Transact-SQL-Abfragen, die Benachrichtigungen für ereignisgesteuerte Abonnements erstellen. Optional können Ereignisregeln die Daten in Ereignisverläufen ändern. Ereignisregeln werden für jeden Ereignisbatch kurz nach seinem Eintreffen verarbeitet.

ms171059.note(de-de,SQL.90).gifHinweis:
Der genaue Zeitpunkt für das Auslösen von Ereignisregeln hängt von der Quantumdauer ab und davon, wie die Anwendung Ereignisse verarbeitet. Weitere Informationen finden Sie unter Angeben der Generatorquantumdauer und Angeben der Ereignisverarbeitungsreihenfolge.

Jede Abonnementklasse kann eine oder mehrere Ereignisregeln enthalten. Sie können jedoch die Auslösungsreihenfolge der Regeln nicht angeben. Ereignisregeln können in beliebiger Reihenfolge ausgelöst werden.

Verarbeitung von Ereignisregeln

Notification Services verwendet den folgenden Prozess, um Benachrichtigungen aus Ereignisregeln zu generieren:

  1. Ereignisse treffen ein.
  2. Notification Services erstellt einen Ereignisbatch pro Ereignisklasse und fügt anschließend jeden Ereignisbatch seiner jeweiligen Ereignistabelle hinzu.
  3. Notification Services führt ggf. die Verlaufsregeln für die Ereignisklasse, die Ereignisverlaufstabellen verwaltet, aus.
    Wenn die Verlaufsregel fehlschlägt, wird die Verarbeitung beendet, und der Ereignisbatch wird als fehlgeschlagen markiert. Ereignisregeln werden nicht ausgeführt, da sie von der erfolgreichen Ereignisbatchverarbeitung abhängen.
  4. Notification Services löst dann Ereignisregeln aus, die Ereignisdaten mit Abonnementdaten verknüpfen, um Benachrichtigungen zu generieren. Ereignisregeln werden ausgeführt für eine Sicht, in der nur die aktuellen Ereignisse für die Ereignisklasse aufgelistet sind, und eine Abonnementsicht, in der nur aktivierte Abonnements aufgelistet sind. Ereignisregeln können auch Ereignisverlaufsdaten verwenden.
  5. Die Ereignisregeln fügen die resultierenden Benachrichtigungen Benachrichtigungstabellen hinzu. Diese Daten werden zum Erstellen und Verteilen von Benachrichtigungen verwendet.

Da die Benachrichtigungen bald nach dem Eintreffen von Ereignissen generiert werden, sind Ereignisregeln für zufällig auftretende Ereignisse und zeitempfindliche Daten geeignet. Auktionsaktualisierungsabonnements und Warnungen bei aktuellen Informationen sind beispielsweise Anwendungen, die Ereignisregeln verwenden sollten.

Definieren einer Ereignisregel

Eine Ereignisregel ist Bestandteil einer Abonnementklasse. Wenn Sie eine Abonnementklasse definieren, müssen Sie mindestens eine ereignisgesteuerte oder geplante Regel definieren. Um eine Ereignisregel zu definieren, erstellen Sie ein Ereignisregelelement. Anschließend geben Sie einen Namen, eine auszuführende Aktion und den Namen der verknüpften Ereignisklasse an. Darüber hinaus können Sie einen Timeoutwert für die Ereignisregelaktion bereitstellen.

So definieren Sie eine Ereignisregel

Benennen einer Ereignisregel

Jede Ereignisregel muss einen innerhalb der Anwendung eindeutigen Name aufweisen. Dieser Name wird verwendet, um die einzelnen Regeln zu Verwaltungszwecken zu identifizieren.

So benennen Sie eine Ereignisregel

  • Definieren Sie den Namen der Ereignisregel durch das RuleName Element for EventRule (ADF), wenn Sie eine Ereignisregel in XML definieren.
  • Definieren Sie den Namen der Ereignisregel in der SubscriptionEventRule-Klasse (NMO), wenn Sie eine Ereignisregel programmgesteuert definieren.
  • Definieren Sie den Namen der Ereignisregel mithilfe der SubscriptionConditionEventRule-Klasse (NMO), wenn Sie eine Ereignisregel mit einer Bedingungsaktion programmgesteuert definieren.

Definieren einer Aktion oder Bedingungsaktion

Bei einer Aktion handelt es sich um die Abfrage, die von Notification Services bei jeder Auslösung der Regel ausgeführt wird. Ereignisregeln können einfache Aktionen und komplexere Bedingungsaktionen enthalten:

  • Eine Aktion enthält eine Transact-SQL-Abfrage, mit der Benachrichtigungen generiert werden, die auf Übereinstimmungen zwischen Abonnementfeldern und Ereignisfeldern basieren. Wenn Abonnenten Abonnements erstellen, definieren sie Parameter für die vordefinierte Abfrage. Weitere Informationen zum Definieren einfacher Aktionen finden Sie unter Definieren von Aktionen.
  • Eine Bedingungsaktion verfügt ebenfalls über eine Transact-SQL-Abfrage, aber diese Abfrage definiert eine Sicht, in der Abonnenten ihre Abonnements definieren können. Abonnenten wählen die sie interessierenden Felder aus und definieren dann ihre eigenen Bedingungen mithilfe einer vordefinierten Reihe von Operatoren, statt Parameter für eine vordefinierte Abfrage anzugeben. Weitere Informationen zum Definieren von Bedingungsaktionen finden Sie unter Definieren von Bedingungsaktionen.

Angeben eines Timeoutwertes

Das Aktionstimeout gibt den zulässigen Zeitraum an, in dem Anweisungen in der Aktion oder Bedingungsaktion abgeschlossen werden müssen. Werden die Anweisungen nicht vor dem Auftreten des Timeouts abgeschlossen, wird von Notification Services ein Rollback der Transaktion ausgeführt, die Ereignisregel als fehlgeschlagen markiert und ein Fehler in das Ereignisprotokoll geschrieben.

So geben Sie einen Timeoutwert an

Verknüpfen der Regel mit einer Ereignisklasse

Jede Ereignisregel muss einer einzelnen Ereignisklasse zugeordnet werden. Notification Services löst die Ereignisregel nur nach dem Verarbeiten von Ereignisbatches der angegebenen Ereignisklasse aus.

So verknüpfen Sie die Regel mit einer Ereignisklasse

Siehe auch

Konzepte

Definieren von geplanten Regeln
Definieren von Aktionen
Definieren von Bedingungsaktionen
Definieren von Abonnementregeln
Definieren von Verläufen für eine Ereignisklasse

Hilfe und Informationen

Informationsquellen für SQL Server 2005