Sammeln und Filtern von Daten für den SQL Server-Ereignisanbieter

Beim Definieren des Ereignisanbieters von Microsoft SQL Server müssen Sie eine Abfrage definieren, die Ereignisdaten sammelt. Optional können Sie eine Abfrage definieren, die eine Nachbearbeitung für die Tabellen ausführt, aus denen Sie Daten sammeln.

Sammeln von Daten

Bei der Transact-SQL-Abfrage, die Sie für das Sammeln von Daten definieren, kann es sich um eine beliebige Transact-SQL-Abfrage handeln, die Daten zurückgibt, die den Feldern in der Zielereignisklasse genau entsprechen. Wenn Sie z. B. eine Ereignisklasse mit zwei Feldern, StockSymbol und StockPrice, definiert haben, besteht die einzige Anforderung für die Abfrage zum Sammeln von Ereignissen darin, dass sie nur zwei Spalten von Daten zurückgibt, die Namen und Datentyp der Felder StockSymbol und StockPrice entsprechen. Ein Beispiel für eine solche Abfrage folgt:

SELECT StockSymbol, StockPrice
FROM StockDB.dbo.StockTable;

Sie können eine gespeicherte Prozedur für die Ereignissammlungsabfrage ausführen.

Filtern von Daten

Wenn die SELECT-Anweisung potenziell eine große Datenmenge zurückgeben könnte und einige dieser Daten keine gültigen Ereignisdaten sind, können Sie die Abfrage filtern. Beispielsweise können Sie eine Abfrage schreiben, die Aktiendaten zurückgibt, die nur die Aktien enthalten, für die Abonnenten Abonnements erstellt haben:

SELECT StockSymbol, StockPrice
FROM StockDB.dbo.StockTable
WHERE StockSymbol IN 
(SELECT DISTINCT StockSymbol FROM dbo.StockSubscriptions);

Diese Abfrage gibt nur die Aktiendaten zurück, die potenziell Benachrichtigungen generieren können.

Nachbearbeitung

Der SQL Server-Ereignisanbieter unterstützt eine Nachbearbeitungsabfrage, sodass Sie nach dem Generieren von Ereignissen einen Cleanup der Daten ausführen oder Daten ändern können. Beispielsweise können Sie über eine Spalte verfügen, die vor dem Generieren von Ereignissen den Wert 0 aufweist, die jedoch nach dem Generieren von Ereignissen den Wert 1 aufweisen soll. Zum Aktualisieren der Tabelle können Sie eine Abfrage wie die folgende schreiben:

UPDATE StockDB.dbo.StockTable
SET EventUsage = 1
WHERE EventUsage = 0;

Die Nachbearbeitungsabfrage wird in der gleichen Transaktion ausgeführt wie die Ereignissammlungsabfrage.

Sie können eine gespeicherte Prozedur für die Nachbearbeitungsabfrage ausführen.

Siehe auch

Konzepte

Definieren eines SQL Server-Ereignisanbieters

Andere Ressourcen

Definieren von Ereignisanbietern
Standardereignisanbieter
SELECT (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005