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)