Share via


NSPrepareRuleFiring (Transact-SQL)

Prepara la base de datos de la aplicación para una activación de regla. Esta preparación garantiza que se ha programado un cuanto, que las vistas de eventos y las vistas de suscripciones programadas están correctamente materializadas para el cuanto y que las activaciones de regla están programadas para el cuanto en función del conjunto de eventos y suscripciones disponibles.

Una vez que el procedimiento almacenado finaliza, el estado de la base de datos de aplicación es equivalente al que tenía antes de la ejecución de la regla, durante el funcionamiento normal del generador.

Sintaxis

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

Argumentos

[ @ReportPossibleEventChronicleUsage = ] chronical_usage_flag

Indica si el procedimiento de activación de regla preparado devuelve una lista de las posibles crónicas de eventos afectadas o utilizadas en la activación de la regla. Un valor distinto de cero hace que la rutina devuelva un conjunto de resultados con el conjunto de crónicas de eventos asociado a la activación de regla preparada. chronical_usage_flag es de tipo tinyint y su valor predeterminado es 1.

[ @DisableQuantumLimits = ] quantum_limits_flag

Indica si en la programación de un nuevo cuanto se utilizan los valores ChronicleQuantumLimit y SubscriptionQuantumLimit de la configuración de ejecución de la aplicación en el archivo de definición de aplicación (ADF). Un valor distinto de cero indica que el procedimiento almacenado no debe utilizar esta configuración para omitir uno o más períodos de cuanto. quantum_limits_flag es de tipo tinyint y su valor predeterminado es 1.

Conjuntos de resultados

NSPrepareRuleFiring genera uno o dos conjuntos de resultados. El primer conjunto de resultados contiene información acerca de la regla.

Nombre de columna Tipo de datos Descripción

QuantumId

int

Número de identificación de cuanto para la activación de regla.

QuantumStartTime

datetime

Fecha y hora de inicio en UTC (hora universal coordinada u hora del meridiano de Greenwich) del cuanto que contiene la regla.

QuantumEndTime

datetime

Fecha y hora de finalización, en UTC, del cuanto que contiene la regla.

RuleName

nvarchar(255)

Nombre asignado a la regla en el archivo de definición de aplicación (ADF) Si no hay ninguna regla lista para ejecutarse, este valor es NULL.

EventClassName

nvarchar(255)

Para las reglas desencadenadas por eventos, se trata del nombre de la clase de evento relacionada. Si la regla es de suscripción programada o si no hay ninguna regla lista para ejecutarse, este valor es NULL.

SubscriptionClassName

nvarchar(255)

Nombre de la clase de suscripción relacionada. Si se trata de una regla de crónica de eventos o si no hay ninguna regla lista para ejecutarse, este valor es NULL.

RuleFiringId

int

Número de identificación que identifica la activación de regla preparada. La columna es NULL si no hay ninguna activación de regla lista para ejecutarse.

EventBatchId

bigint

Número de identificación que identifica el lote de eventos relacionado. Si no se trata de una regla de suscripción de eventos o de crónica de eventos, la aplicación no está procesando los eventos en orden o no hay ninguna regla lista para ejecutarse, el valor es NULL.

StartScanTime

datetime

Fecha y hora de inicio, en UTC, para una regla de suscripción programada y preparada. La fecha y hora de inicio deben estar comprendidas entre QuantumStartTime y QuantumEndTime.

Si no se trata de una regla de suscripción de eventos o de crónica de eventos, la aplicación no está procesando los eventos en orden o no hay ninguna regla lista para ejecutarse, el valor es NULL.

EndScanTime

datetime

Fecha y hora de finalización, en UTC, para una regla de suscripción programada y preparada. La fecha y hora de finalización deben estar comprendidas entre QuantumStartTime y QuantumEndTime.

Si no se trata de una regla de suscripción de eventos o de crónica de eventos, la aplicación no está procesando los eventos en orden o no hay ninguna regla lista para ejecutarse, el valor es NULL.

RemainingQuantumRuleFirings

int

Número de activaciones de regla que quedan pendientes para completar la activación de regla para el cuanto. Este número incluye todas las activaciones de regla preparadas porque no se han ejecutado. Si no hay reglas para preparar, el valor es 0.

El segundo conjunto de resultados sólo aparece si hay posibles efectos en las crónicas. El conjunto de resultados se ordena por PossibleChronicleReferenceByRule.

Nombre de columna Tipo de datos Descripción

PossibleChronicleReferenceByRule

nvarchar(255)

Nombre de la crónica de eventos asociada a una activación de regla preparada.

Notas

Notification Services crea el procedimiento almacenado NSPrepareRuleFiring en la base de datos de aplicación al crear la instancia. Al actualizar la aplicación, Notification Services vuelve a compilar el procedimiento almacenado.

Este procedimiento almacenado se encuentra en el esquema de la aplicación, que se especifica mediante el elemento SchemaName del archivo de definición de aplicación (ADF). Si no se proporciona ningún nombre de esquema, el esquema predeterminado es dbo.

Este procedimiento almacenado sólo se puede ejecutar cuando el generador está deshabilitado o pendiente de ser deshabilitado.

El procedimiento almacenado se puede llamar varias veces sin llamar a NSExecuteRuleFiring, pero no se modificará el estado en la base de datos de aplicación. La única forma de hacer que el estado de la base de datos de aplicación avance más allá de una activación de regla preparada es utilizar el procedimiento almacenado NSExecuteRuleFiring o iniciar la instancia.

Permisos

De forma predeterminada, los permisos de ejecución corresponden a los miembros de las funciones de base de datos NSGenerator y NSRunService, la función fija de base de datos db_owner y la función fija de servidor sysadmin.

Valores de código de retorno

0 (correcto) o 1 (error)

Ejemplos

A. Informar del uso de crónicas y utilizar límites de cuanto

En el ejemplo siguiente se muestra cómo preparar la base de datos para la ejecución de reglas programadas desde el cuanto 1, informando del posible uso de crónicas de eventos. La activación de regla no pasa por alto los límites de cuanto especificados en el ADF.

La aplicación utiliza la configuración predeterminada de SchemaName, que coloca todos los objetos de la aplicación en el esquema dbo.

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

B. Utilizar la configuración predeterminada

En el ejemplo siguiente se muestra cómo preparar la base de datos para la ejecución de reglas programadas desde el cuanto 100, utilizando los valores predeterminados del procedimiento almacenado. El procedimiento almacenado no informa del uso de crónicas de eventos y omite los límites de cuanto.

En este ejemplo, el procedimiento almacenado (al igual que los demás objetos de aplicación) se encuentra en el esquema Stock, tal y como se especifica en el elemento SchemaName del ADF.

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

Vea también

Referencia

NSExecuteRuleFiring (Transact-SQL)
NSSetQuantumClock (Transact-SQL)
NSSetQuantumClockDate (Transact-SQL)
Procedimientos almacenados de Notification Services (Transact-SQL)
NSExecuteRuleFiring (Transact-SQL)

Otros recursos

Informes de rendimiento de Notification Services
SchemaName Element (ADF)

Ayuda e información

Obtener ayuda sobre SQL Server 2005