NSPrepareRuleFiring (Transact-SQL)
Bereitet die Anwendungsdatenbank auf eine Regelauslösung vor. Durch diese Vorbereitung wird sichergestellt, dass ein Quantum geplant wurde, dass Ereignissichten und geplante Abonnementsichten ordnungsgemäß für das Quantum materialisiert wurden und dass Regelauslösungen für das Quantum basierend auf der Menge verfügbarer Ereignisse und Abonnements geplant wurden.
Nachdem die Ausführung der gespeicherten Prozedur abgeschlossen ist, weist die Anwendungsdatenbank einen Status auf, der dem Status vor der Regelausführung während des normalen Generatorbetriebs entspricht.
Syntax
[ application_schema_name . ] NSPrepareRuleFiring
[ [ @ReportPossibleEventChronicleUsage = ] chronical_usage_flag ]
[, [ @DisableQuantumLimits = ] quantum_limits_flag ]
Argumente
[ @ReportPossibleEventChronicleUsage = ] chronical_usage_flag
Gibt an, ob die Prozedur für die vorbereitete Regelauslösung eine Liste möglicher Ereignisverläufe zurückgibt, die von der Regelauslösung betroffen sind oder von ihr verwendet werden. Ein Wert ungleich 0 bewirkt, dass die Routine ein Resultset zurückgibt, das die Menge der Ereignisverläufe auflistet, die der vorbereiteten Regelauslösung zugeordnet sind. chronical_usage_flag ist ein Wert vom Datentyp tinyint. Der Standardwert ist 1.
[ @DisableQuantumLimits = ] quantum_limits_flag
Gibt an, ob bei der Planung eines neuen Quantums der ChronicleQuantumLimit-Wert und der SubscriptionQuantumLimit-Wert aus den Einstellungen zur Anwendungsausführung in der Anwendungsdefinitionsdatei (Application Definition File, ADF) verwendet werden. Ein Wert ungleich 0 gibt an, dass die gespeicherte Prozedur diese Einstellungen zum Auslassen einer oder mehrerer Quantumperioden nicht verwenden soll. quantum_limits_flag ist ein Wert vom Datentyp tinyint. Der Standardwert ist 1.
Rückgabecodewerte
0 (Erfolg) oder 1 (Fehler)
Resultsets
NSPrepareRuleFiring erzeugt ein oder zwei Resultsets. Das erste Resultset enthält Informationen zur Regel.
Spaltenname | Datentyp | Beschreibung |
---|---|---|
QuantumId |
int |
ID des Quantums für die Regelauslösung |
QuantumStartTime |
datetime |
Startdatum und Uhrzeit in UTC (Coordinated Universal Time, Koordinierte Weltzeit 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 ADF 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 enthält diese Spalte den Namen der zugehörigen Ereignisklasse. Falls die Regel eine geplante Abonnementregel ist oder noch keine Regel ausgeführt werden kann, ist dieser Wert NULL. |
SubscriptionClassName |
nvarchar(255) |
Name der zugehörigen Abonnementklasse. Falls es sich um eine Ereignisverlaufsregel handelt oder noch keine Regel ausgeführt werden kann, ist dieser Wert NULL. |
RuleFiringId |
int |
ID zur Identifizierung der vorbereiteten Regelauslösung. Die Spalte ist NULL, wenn noch keine Regelauslösung ausgeführt werden kann. |
EventBatchId |
bigint |
ID zur Identifizierung des zugehörigen Ereignisbatches. Falls die Regel keine Ereignisverlaufsregel oder Abonnementereignisregel ist, die Anwendung die Ereignisse nicht in einer bestimmten Reihenfolge verarbeitet oder noch keine Regel ausgeführt werden kann, ist der Wert NULL. |
StartScanTime |
datetime |
Startdatum und Uhrzeit (in UTC) für eine vorbereitete geplante Abonnementregel. Der durch Startdatum und Uhrzeit angegebene Zeitpunkt muss zwischen QuantumStartTime und QuantumEndTime liegen. Falls die Regel keine Ereignisverlaufsregel oder Abonnementereignisregel ist, die Anwendung die Ereignisse nicht in einer bestimmten Reihenfolge verarbeitet oder noch keine Regel ausgeführt werden kann, ist der Wert NULL. |
EndScanTime |
datetime |
Enddatum und Uhrzeit (in UTC) für eine vorbereitete geplante Abonnementregel. Der durch Enddatum und Uhrzeit angegebene Zeitpunkt muss zwischen QuantumStartTime und QuantumEndTime liegen. Falls die Regel keine Ereignisverlaufsregel oder Abonnementereignisregel ist, die Anwendung die Ereignisse nicht in einer bestimmten Reihenfolge verarbeitet oder noch keine Regel ausgeführt werden kann, ist der Wert NULL. |
RemainingQuantumRuleFirings |
int |
Anzahl der verbleibenden Regelauslösungen, um die Regelauslösung für das Quantum abzuschließen. Diese Anzahl umfasst alle vorbereiteten Regelauslösungen, 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 die Verläufe möglich sind. Das Resultset ist nach PossibleChronicleReferenceByRule sortiert.
Spaltenname | Datentyp | Beschreibung |
---|---|---|
PossibleChronicleReferenceByRule |
nvarchar(255) |
Name des Ereignisverlaufs, der einer vorbereiteten Regelauslösung zugeordnet ist. |
Hinweise
Notification Services erstellt die gespeicherte Prozedur NSPrepareRuleFiring in der Anwendungsdatenbank, wenn Sie die Instanz erstellen. Wenn Sie die Anwendung aktualisieren, wird die gespeicherte Prozedur von Notification Services neu kompiliert.
Diese gespeicherte Prozedur befindet sich im Schema der Anwendung, das durch das SchemaName-Element der ADF angegeben wird. Falls kein Schemaname bereitgestellt wurde, wird dbo als Standardschema verwendet.
Diese gespeicherte Prozedur kann nur ausgeführt werden, wenn der Generator deaktiviert ist oder seine Deaktivierung aussteht.
Die gespeicherte Prozedur kann wiederholt aufgerufen werden, ohne NSExecuteRuleFiring aufzurufen. Der Status in der Anwendungsdatenbank wird jedoch nicht geändert. Die einzige Möglichkeit, den Status der Anwendungsdatenbank zu ändern, sodass er dem Status nach einer vorbereiteten Regelauslösung entspricht, besteht darin, die gespeicherte Prozedur NSExecuteRuleFiring zu verwenden oder die Instanz zu starten.
Berechtigungen
Standardmäßig verfügen Mitglieder der Datenbankrollen NSGenerator und NSRunService, der festen Datenbankrolle db_owner und der festen Serverrolle sysadmin über Berechtigungen zum Ausführen der gespeicherten Prozedur.
Beispiele
A. Melden der Verlaufsverwendung und Verwenden von Quantumlimits
Im folgenden Beispiel wird gezeigt, wie die Datenbank für die Ausführung geplanter Regeln aus Quantum 1 vorbereitet wird, wobei die mögliche Verwendung von Ereignisverläufen gemeldet wird. Die in der ADF angegebenen Quantumlimits werden von der Regelauslösung nicht 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.NSPrepareRuleFiring
@ReportPossibleEventChronicleUsage = 1,
@DisableQuantumLimits = 0;
B. Verwenden von Standardeinstellungen
Im folgenden Beispiel wird gezeigt, wie die Datenbank für die Ausführung geplanter Regeln aus Quantum 100 vorbereitet wird, wobei die Standardeinstellungen der gespeicherten Prozedur verwendet werden. Von der gespeicherten Prozedur wird kein Bericht zum Verwenden von Ereignisverläufen erstellt, und 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.NSPrepareRuleFiring;
Siehe auch
Verweis
NSExecuteRuleFiring (Transact-SQL)
NSSetQuantumClock (Transact-SQL)
NSSetQuantumClockDate (Transact-SQL)
Gespeicherte Prozeduren in Notification Services (Transact-SQL)
NSExecuteRuleFiring (Transact-SQL)
Andere Ressourcen
Notification Services-Leistungsberichte
SchemaName Element (ADF)