Share via


NSExecuteRuleFiring (Transact-SQL)

Prepara y ejecuta las reglas de Microsoft SQL Server Notification Services. Esto le permite ejecutar manualmente el generador, ejecutando reglas para generar notificaciones y administrar el estado.

Con independencia de si la activación de regla es correcta, este procedimiento almacenado intenta preparar la siguiente activación de regla mediante la materialización del evento adecuado y las vistas de suscripción programadas para que pueda depurar el comportamiento de activación de regla.

Sintaxis

[ application_schema_name . ] NSExecuteRuleFiring 
    [ [ @ReportExecutionResults = ] report_flag ]
    [, [ @DisableQuantumLimits = ] limit_flag ]

Argumentos

[@ReportExecutionResults = ] report_flag

Indica si el procedimiento almacenado proporciona información sobre la ejecución de la activación de regla. Los valores distintos a cero generan información relativa a la activación de regla. El argumento report_flag es de tipo tinyint y su valor predeterminado es 1.

[@DisableQuantumLimits = ] limit_flag

Indica si el procedimiento almacenado tiene en cuenta los límites de cuanto de suscripción y cuanto de crónica de eventos especificados por la aplicación. Los valores distintos a cero hacen que la programación de cuantos omita los límites de cuanto. El argumento limit_flag es de tipo tinyint y su valor predeterminado es 1.

Conjuntos de resultados

NSExecuteRuleFiring genera hasta tres conjuntos de resultados. El primer conjunto de resultados contiene información sobre las reglas programadas.

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 alguna crónica puede verse afectada. 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.

El tercer conjunto de resultados sólo aparece si el procedimiento almacenado generó notificaciones. El conjunto de resultados contiene información acerca de las notificaciones y se agrupa según el valor de NotificationClassName.

Nombre de columna Tipo de datos Descripción

NotificationClassName

nvarchar(255)

Nombre de la clase de notificación que generó notificaciones.

NotificationBatchId

bigint

Número de identificación del lote de notificaciones que contiene las notificaciones generadas.

NotificationCount

bigint

Número de notificaciones generadas por la activación de regla.

StartGenerationTime

datetime

Fecha y hora de inicio, en hora universal coordinada, para el lote de notificaciones.

EndGenerationTime

datetime

Fecha y hora de finalización, en hora universal coordinada, para el lote de notificaciones.

Notas

Notification Services crea el procedimiento almacenado NSExecuteRuleFiring 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.

El generador debe estar deshabilitado para ejecutar el procedimiento almacenado NSExecuteRuleFiring. Dado que este procedimiento almacenado utiliza el generador manualmente, dejar que el generador se ejecute al mismo tiempo dificultaría el uso del procedimiento almacenado.

Utilice el procedimiento almacenado NSPrepareRuleFiring si sólo desea preparar la base de datos de aplicación para una activación de regla y no para activar la regla realmente.

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. Notificar resultados y omitir los límites de cuanto

El ejemplo siguiente muestra cómo establecer el Id. de cuanto en 1 y, seguidamente, activar la regla para el cuanto. El procedimiento almacenado notifica resultados y omite 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.NSExecuteRuleFiring 
    @ReportExecutionResults = 1,
    @DisableQuantumLimits = 0;

Si habilita la aplicación después de ejecutar este ejemplo, el reloj del cuanto continúa a partir del Id. de cuanto 1; el reloj del cuanto no se restablece automáticamente al cuanto más actualizado cuando se habilita.

B. Utilizar la configuración predeterminada

El ejemplo siguiente muestra cómo establecer el Id. de cuanto en 100 y, a continuación, activar la regla para el cuanto utilizando la configuración predeterminada. El procedimiento almacenado no notifica resultados 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.NSExecuteRuleFiring;

Si habilita la aplicación después de ejecutar este ejemplo, el reloj del cuanto continúa a partir del Id. de cuanto 100; el reloj del cuanto no se restablece automáticamente al cuanto más actualizado cuando se habilita.

Vea también

Referencia

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

Otros recursos

Informes de rendimiento de Notification Services
SchemaName Element (ADF)

Ayuda e información

Obtener ayuda sobre SQL Server 2005