Share via


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)

Hilfe und Informationen

Informationsquellen für SQL Server 2005