NSPrepareRuleFiring (Transact-SQL)

Prépare la base de données d'applications pour un déclenchement de règle. Cette préparation garantit qu'un quantum a été planifié, que des affichages d'événements et des affichages d'abonnements planifiés sont correctement matérialisés pour le quantum et que des déclenchements de règle sont planifiés pour le quantum, en fonction de l'ensemble d'événements et d'abonnements disponibles.

Une fois la procédure stockée terminée, la base de données d'applications possède un état équivalent à celui qui existait avant l'exécution de la règle au cours du fonctionnement normal du générateur.

Syntaxe

[ application_schema_name . ] NSPrepareRuleFiring 
    [ [ @ReportPossibleEventChronicleUsage = ] chronical_usage_flag ]
    [, [ @DisableQuantumLimits = ] quantum_limits_flag ]

Arguments

[ @ReportPossibleEventChronicleUsage = ] chronical_usage_flag

Indique si la procédure d'activation de règle préparée renvoie une liste de chroniques d'événement possibles affectées ou utilisées par l'activation de règle. Avec une valeur différente de zéro, la routine renvoie un jeu de résultats répertoriant l'ensemble de chroniques d'événements associées à l'activation de règle préparée. chronical_usage_flag est de type tinyint et possède la valeur 1 par défaut.

[ @DisableQuantumLimits = ] quantum_limits_flag

Indique si la planification d'un nouveau quantum utilise la valeur ChronicleQuantumLimit et la valeur SubscriptionQuantumLimit à partir des paramètres d'exécution de l'application dans le fichier de définition d'application (ADF). Une valeur différente de zéro indique que la procédure stockée ne doit pas utiliser ces paramètres pour ignorer une ou plusieurs périodes de quantum. quantum_limits_flag est de type tinyint et possède la valeur 1 par défaut.

Valeurs des codes de retour

0 (succès) ou 1 (échec)

Jeux de résultats

NSPrepareRuleFiring produit un ou deux jeux de résultats. Le premier jeu de résultats contient des informations sur la règle.

Nom de la colonne Type de données Description

QuantumId

int

Numéro d'ID du quantum pour l'activation de règle.

QuantumStartTime

datetime

Date et heure UTC (Coordinated Universal Time ou GMT) de démarrage du quantum contenant la règle.

QuantumEndTime

datetime

Date et heure UTC de fin du quantum contenant la règle.

RuleName

nvarchar(255)

Nom affecté à la règle dans le fichier de définition d'application. Si aucune règle n'est prête à être exécutée, cette valeur est NULL.

EventClassName

nvarchar(255)

Pour les règles déclenchées par les événements, il s'agit du nom de la classe d'événements connexe. Si la règle est une règle d'abonnement planifié, ou si aucune règle n'est prête à être exécutée, cette valeur est NULL.

SubscriptionClassName

nvarchar(255)

Nom de la classe d'abonnement connexe. Si la règle est une règle de chronique d'événement, ou si aucune règle n'est prête à être exécutée, cette valeur est NULL.

RuleFiringId

int

Numéro d'ID qui identifie l'activation de règle préparée. Cette colonne possède la valeur NULL si aucune activation de règle n'est prête à être exécutée.

EventBatchId

bigint

Numéro d'ID qui identifie le lot d'événements connexe. Si la règle n'est pas une règle de chronique d'événement ou une règle d'abonnement d'événement, si l'application ne traite aucun événement selon un ordre ou si aucune règle n'est prête à être exécutée, la valeur est NULL.

StartScanTime

datetime

Date et heure UTC de démarrage d'une règle d'abonnement planifiée préparée. La date et l'heure de début doivent être comprises entre QuantumStartTime et QuantumEndTime.

Si la règle n'est pas une règle de chronique d'événement ou une règle d'abonnement d'événement, si l'application ne traite aucun événement selon un ordre ou si aucune règle n'est prête à être exécutée, la valeur est NULL.

EndScanTime

datetime

Date et heure UTC de fin d'une règle d'abonnement planifiée préparée. La date et l'heure de fin doivent être comprises entre QuantumStartTime et QuantumEndTime.

Si la règle n'est pas une règle de chronique d'événement ou une règle d'abonnement d'événement, si l'application ne traite aucun événement selon un ordre ou si aucune règle n'est prête à être exécutée, la valeur est NULL.

RemainingQuantumRuleFirings

int

Nombre d'activations de règle restantes pour achever l'activation de règle du quantum. Ce nombre inclut toutes les activations de règle préparées car elles n'ont pas été exécutées. S'il n'existe aucune règle à préparer, cette valeur est 0.

Le second jeu de résultats s'affiche uniquement s'il présente des effets possibles sur les chroniques. Le jeu de résultats est trié par PossibleChronicleReferenceByRule.

Nom de la colonne Type de données Description

PossibleChronicleReferenceByRule

nvarchar(255)

Nom de la chronique d'événement associée à une activation de règle préparée.

Notes

Notification Services crée la procédure stockée NSPrepareRuleFiring dans la base de données des applications lorsque vous créez l'instance. Lorsque vous mettez à jour l'application, Notification Services recompile la procédure stockée.

Cette procédure stockée se trouve dans le schéma de l'application, spécifié par l'élément SchemaName du fichier de définition d'application. Si aucun nom de schéma n'est spécifié, le schéma par défaut est dbo.

Cette procédure stockée peut être exécutée uniquement lorsque le générateur se trouve dans un état désactivé ou désactivé en attente.

La procédure stockée peut être appelée de manière répétitive sans appeler NSExecuteRuleFiring, mais l'état dans la base de données d'applications ne sera pas modifié. L'unique moyen de déplacer l'état de la base de données d'applications au-delà d'une activation de règle préparée consiste à utiliser la procédure stockée NSExecuteRuleFiring ou à démarrer l'instance.

Autorisations

Les autorisations d'exécution reviennent par défaut aux membres des rôles de base de données NSGenerator et NSRunService, le rôle de base de données fixe db_owner et celui de serveur fixe sysadmin.

Exemples

A. Rapport d'utilisation de chronique et utilisation de limites de quantum

L'exemple suivant illustre la préparation de la base de données pour une exécution de règles planifiées à partir de quantum 1, en créant un rapport sur l'utilisation possible de chroniques d'événement. L'activation de règle n'ignore pas les limites de quantum spécifiées dans le fichier de définition d'application.

L'application utilise les paramètres SchemaName par défaut, qui place tous les objets d'application dans le schéma dbo.

EXEC dbo.NSSetQuantumClock 
    @QuantumId = 1;
EXEC dbo.NSPrepareRuleFiring 
    @ReportPossibleEventChronicleUsage = 1,
    @DisableQuantumLimits = 0;

B. Utiliser des paramètres par défaut

L'exemple suivant illustre la préparation de la base de données pour l'exécution de règles planifiées à partir de quantum 100, à l'aide des valeurs par défaut de la procédure stockée. La procédure stockée ne crée pas de rapport sur l'utilisation de chronique d'événement et ignore les limites de quantum.

Dans cet exemple, la procédure stockée (comme tous les autres objets d'application) se trouve dans le schéma Stock, comme spécifié dans l'élément SchemaName du fichier de définition d'application.

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

Voir aussi

Référence

NSExecuteRuleFiring (Transact-SQL)
NSSetQuantumClock (Transact-SQL)
NSSetQuantumClockDate (Transact-SQL)
Procédures stockées de Notification Services (Transact-SQL)
NSExecuteRuleFiring (Transact-SQL)

Autres ressources

Rapports de performances de Notification Services
SchemaName Element (ADF)

Aide et Informations

Assistance sur SQL Server 2005