NSExecuteRuleFiring (Transact-SQL)

Bereitet Microsoft SQL Server Notification Services-Regeln vor und führt sie aus. Dies ermöglicht Ihnen das manuelle Ausführen des Generators, indem Sie Regeln zum Generieren von Benachrichtigungen und zum Verwalten des Status ausführen.

Unabhängig davon, ob das Auslösen der Regeln erfolgreich war, wird von dieser gespeicherten Prozedur versucht, das nächste Auslösen von Regeln vorzubereiten. Dies geschieht durch das Materialisieren des entsprechenden Ereignisses und der geplanten Abonnementsichten, sodass Sie das Verhalten beim Auslösen von Regeln debuggen können.

Syntax

[ application_schema_name . ] NSExecuteRuleFiring 
    [ [ @ReportExecutionResults = ] report_flag ]
    [, [ @DisableQuantumLimits = ] limit_flag ]

Argumente

[@ReportExecutionResults = ] report_flag

Gibt an, ob die gespeicherte Prozedur Informationen zur Ausführung der Regelauslösung bereitstellt. Bei Werten ungleich NULL werden Informationen zur Regelauslösung zurückgegeben. report_flag ist ein Wert vom Datentyp tinyint und weist den Standardwert 1 auf.

[@DisableQuantumLimits = ] limit_flag

Gibt an, ob die gespeicherte Prozedur die von der Anwendung angegebenen Limits zum Ereignisablaufquantum und Abonnementquantum beobachtet. Bei einem Wert ungleich NULL werden die Quantumlimits bei der Quantumzeitplanung ignoriert. limit_flag ist ein Wert vom Datentyp tinyint und weist den Standardwert 1 auf.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Resultsets

NSExecuteRuleFiring erstellt bis zu drei Resultsets. Das erste Resultset enthält Informationen zu geplanten Regeln.

Spaltenname Datentyp Beschreibung

QuantumId

int

ID des Quantums für die Regelauslösung.

QuantumStartTime

datetime

Startdatum und Uhrzeit in UTC (Coordinated Universal Time oder Greenwich Mean Time) des Quantums, das die Regel enthält.

QuantumEndTime

datetime

Enddatum und Uhrzeit in UTC des Quantums, das die Regel enthält.

RuleName

nvarchar(255)

Name, der in der Anwendungsdefinitionsdatei (ADF, Application Definition File) der Regel zugewiesen ist. Falls noch keine Regel ausgeführt werden kann, ist dieser Wert NULL.

EventClassName

nvarchar(255)

Für durch Ereignisse ausgelöste Regeln der Name der verbundenen Ereignisklasse. Falls die Regel eine geplante Abonnementregel ist oder keine Regel ausgeführt werden kann, ist dieser Wert NULL.

SubscriptionClassName

nvarchar(255)

Name der verbundenen Abonnementklasse. Falls es sich um eine Ereignisverlaufsregel handelt oder keine Regel ausgeführt werden kann, ist dieser Wert NULL.

RuleFiringId

int

ID zur Identifizierung der vorbereiteten Regelauslösung. Die Spalte ist NULL, wenn keine Regelauslösung ausgeführt werden kann.

EventBatchId

bigint

ID zur Identifizierung des verbundenen Ereignisbatches. Falls die Regel keine Ereignisverlaufsregel oder Abonnementereignisregel ist, die Anwendung die Ereignisse nicht in einer bestimmten Reihenfolge verarbeitet bzw. keine Regel ausgeführt werden kann, ist der Wert NULL.

StartScanTime

datetime

Startdatum und Uhrzeit in UTC für eine vorbereitete geplante Abonnementregel. Die Angabe des Startdatums und der Uhrzeit muss zwischen QuantumStartTime und QuantumEndTime liegen.

Falls die Regel keine Ereignisverlaufsregel oder Abonnementereignisregel ist, die Anwendung die Ereignisse nicht in einer bestimmten Reihenfolge verarbeitet bzw. keine Regel ausgeführt werden kann, ist der Wert NULL.

EndScanTime

datetime

Enddatum und Uhrzeit in UTC für eine vorbereitete geplante Abonnementregel. Die Angabe des Enddatums und der Uhrzeit muss zwischen QuantumStartTime und QuantumEndTime liegen.

Falls die Regel keine Ereignisverlaufsregel oder Abonnementereignisregel ist, die Anwendung die Ereignisse nicht in einer bestimmten Reihenfolge verarbeitet bzw. keine Regel ausgeführt werden kann, ist der Wert NULL.

RemainingQuantumRuleFirings

int

Anzahl der verbleibenden Regelauslösungen zum Abschließen der Regelauslösung für das Quantum. Diese Anzahl schließt alle vorbereiteten Regelauslösungen ein, da diese noch nicht ausgeführt wurden. Falls keine Regeln vorzubereiten sind, ist dieser Wert 0.

Das zweite Resultset wird nur angezeigt, wenn Auswirkungen auf Verläufe möglich sind. Das Resultset ist nach PossibleChronicleReferenceByRule sortiert.

Spaltenname Datentyp Beschreibung

PossibleChronicleReferenceByRule

nvarchar(255)

Name des einer vorbereiteten Regelauslösung zugeordneten Ereignisverlaufs.

Das dritte Resultset wird nur angezeigt, wenn von der gespeicherten Prozedur Benachrichtigungen erstellt wurden. Das Resultset enthält Informationen zu den Benachrichtigungen und ist nach dem NotificationClassName-Wert gruppiert.

Spaltenname Datentyp Beschreibung

NotificationClassName

nvarchar(255)

Name der Benachrichtigungsklasse, von der Benachrichtigungen erstellt wurden.

NotificationBatchId

bigint

ID des Benachrichtigungsbatches, der die generierten Benachrichtigungen enthält.

NotificationCount

bigint

Anzahl der von der Regelauslösung generierten Benachrichtigungen.

StartGenerationTime

datetime

Startdatum und Uhrzeit in UTC für den Benachrichtigungsbatch.

EndGenerationTime

datetime

Enddatum und Uhrzeit in UTC für den Benachrichtigungsbatch.

Hinweise

Notification Services erstellt die gespeicherte Prozedur NSExecuteRuleFiring in der Anwendungsdatenbank, wenn Sie die Instanz erstellen. Wenn Sie die Anwendung aktualisieren, führt Notification Services eine erneute Kompilierung der gespeicherten Prozedur aus.

Diese gespeicherte Prozedur befindet sich im Anwendungsschema, das vom SchemaName-Element der Anwendungsdefinitionsdatei (ADF, Application Definition File) angegeben wird. Falls kein Schemaname bereitgestellt wurde, wird dbo als Standardschema verwendet.

Der Generator muss zum Ausführen der gespeicherten Prozedur NSExecuteRuleFiring deaktiviert sein. Da diese gespeicherte Prozedur den Generator manuell betreibt, würde ein Problem auftreten, wenn der Generator gleichzeitig ausgeführt werden könnte.

Verwenden Sie die gespeicherte Prozedur NSPrepareRuleFiring, wenn Sie die Anwendungsdatenbank für eine Regelauslösung vorbereiten und die Regel nicht tatsächlich auslösen möchten.

Berechtigungen

Standardmäßig verfügen Mitglieder der Datenbankrollen NSGenerator und NSRunService, der festen Datenbankrolle db_owner und der festen Serverrolle sysadmin über die Ausführungsberechtigungen.

Beispiele

A. Erstellen von Ergebnisberichten und Ignorieren von Quantumlimits

Im folgenden Beispiel wird gezeigt, wie die Quantum-ID auf 1 festgelegt und anschließend die Regel für dieses Quantum ausgeführt wird. Von der gespeicherten Prozedur wird ein Ergebnisbericht erstellt, und die in der ADF angegebenen Quantumlimits werden ignoriert.

Von der Anwendung werden die standardmäßigen SchemaName-Einstellungen verwendet, wodurch alle Anwendungsobjekte im dbo-Schema platziert werden.

EXEC dbo.NSSetQuantumClock 
    @QuantumId = 1;
EXEC dbo.NSExecuteRuleFiring 
    @ReportExecutionResults = 1,
    @DisableQuantumLimits = 0;

Wenn Sie die Anwendung nach dem Ausführen dieses Beispiels aktivieren, wird die Quantumzeit von Quantum-ID 1 fortgesetzt. Die Quantumzeit wird bei der Aktivierung nicht automatisch auf das aktuellste Quantum zurückgesetzt.

B. Verwenden von Standardeinstellungen

Im folgenden Beispiel wird gezeigt, wie die Quantum-ID auf 100 festgelegt und anschließend die Regel für dieses Quantum mithilfe der Standardeinstellungen ausgeführt wird. Von der gespeicherten Prozedur wird kein Ergebnisbericht erstellt, und die Quantumlimits werden ignoriert.

In diesem Beispiel befindet sich die gespeicherte Prozedur (wie alle anderen Anwendungsobjekte) im Stock-Schema, wie es im SchemaName-Element der ADF angegeben ist.

EXEC dbo.NSSetQuantumClock 
    @QuantumId = 100;
EXEC Stock.NSExecuteRuleFiring;

Wenn Sie die Anwendung nach dem Ausführen dieses Beispiels aktivieren, wird die Quantumzeit von Quantum-ID 100 fortgesetzt. Die Quantumzeit wird bei der Aktivierung nicht automatisch auf das aktuellste Quantum zurückgesetzt.

Siehe auch

Verweis

NSPrepareRuleFiring (Transact-SQL)
NSSetQuantumClock (Transact-SQL)
NSSetQuantumClockDate (Transact-SQL)
Gespeicherte Prozeduren in Notification Services (Transact-SQL)
NSPrepareRuleFiring (Transact-SQL)

Andere Ressourcen

Notification Services-Leistungsberichte
SchemaName Element (ADF)

Hilfe und Informationen

Informationsquellen für SQL Server 2005