Compartir a través de


Definir crónicas para una clase de suscripción

Las tablas de crónica de la suscripción almacenan datos de suscripción para utilizarlos en la aplicación. Por ejemplo, podría utilizar una tabla de crónica de suscripción para almacenar información sobre la última notificación que se entregó a un suscriptor y generar la siguiente notificación sólo a partir de los datos que han llegado durante el tiempo transcurrido.

Usos comunes para las crónicas de suscripción

Las crónicas de suscripción normalmente almacenan datos sobre notificaciones anteriores. Cuando se generan notificaciones, la aplicación puede utilizar estos datos para determinar cuándo recibió el suscriptor por última vez una notificación, o si el suscriptor ha recibido una notificación similar.

Un buen ejemplo de cuándo utilizar una tabla de crónica de suscripciones es una aplicación en la que se desea limitar cada suscriptor a una notificación por período de tiempo. Puede definir una crónica de suscripción que contenga una fila por suscriptor y que tenga una marca de tiempo en la que se indique cuándo se generó la última notificación.

Cuando se generan notificaciones, es posible incluir una condición para generar notificaciones sólo si el suscriptor no ha recibido ninguna notificación en las últimas 24 horas. Si el suscriptor no ha recibido una notificación recientemente, agregue la notificación a la tabla de notificaciones y actualice la marca de tiempo en la crónica de suscripción.

Tablas de crónica de suscripciones

Las crónicas de suscripción se implementan como tablas. Cuando se define una clase de suscripción, se pueden definir cero, una o varias tablas de crónica mediante la instrucción CREATE TABLE de Transact-SQL. Esta instrucción debe incluir el nombre de la tabla, los nombres de campo y los tipos de datos de campo. La instrucción también puede incluir argumentos para restricciones y cualquier otro parámetro CREATE TABLE opcional. También puede incluirse una instrucción CREATE INDEX para crear un índice en la tabla de crónica de eventos. Para obtener más información, vea CREATE TABLE (Transact-SQL).

Notification Services no cambia automáticamente el nombre de las tablas de crónica de suscripciones cuando se actualiza la aplicación, como ocurre con otras tablas de suscripciones. Las instrucciones que crean una tabla de crónica dan error si existe otra tabla con el mismo nombre. Utilice la vista INFORMATION_SCHEMA.TABLES para comprobar que la tabla existe y, a continuación, elija entre omitir crear la tabla, o quitar y volver a crear la tabla.

En el siguiente ejemplo se muestra cómo eliminar una tabla existente con el nombre dbo.SubscriberHistory y, a continuación, crear una crónica para la clase de suscripción StockSubscriptions que tenga dos columnas (SubscriberId y NotificationTime):

IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_NAME = 'SubscriptionHistory'
        AND TABLE_SCHEMA = 'dbo')
    DROP TABLE dbo.SubscriberHistory;
CREATE TABLE dbo.SubscriberHistory
    ( 
    SubscriberId nvarchar(255), 
    LastNotified datetime 
    );

[!NOTA] Si está definiendo una aplicación en un archivo XML, debe reemplazar los caracteres XML reservados, como '>', por sus referencias de entidad. Para obtener más información, vea XML Reserved Characters.

Para definir una tabla de crónica de suscripciones:

Si está definiendo una aplicación utilizando XML, defina crónicas en el archivo de definición de aplicación (ADF). Si está definiendo una aplicación mediante programación, utilice los Objetos de administración de Notification Services (NMO) para definir las crónicas.

Actualizar crónicas de suscripción

Puede definir una o más consultas para manipular los datos de la tabla de crónicas de suscripción. Estas consultas insertan, actualizan y eliminan datos de las tablas de crónica a fin de conservarlas en un estado adecuado para su uso por la aplicación.

Debe definir reglas de crónica de suscripción en un evento o regla de suscripción programada nuevos, o como parte de una nueva regla de suscripción.

[!NOTA] No hay ninguna garantía acerca del orden de activación entre varias reglas de evento o reglas programadas.

El siguiente código muestra cómo podría actualizarse una crónica de suscripción para una aplicación de valores bursátiles. La crónica de suscripción realiza un seguimiento de cuándo se generó por última vez una notificación para cada suscriptor.

UPDATE dbo.SubscriberHistory
SET LastNotified = GETUTCDATE() 
FROM dbo.StockSub s 
    JOIN dbo.SubscriberHistory h
        ON s.SubscriberId = h.SubscriberId
    JOIN dbo.EventChron ec 
        ON ec.Updated > h.LastNotified;

Esta regla depende de la utilización de la crónica de eventos para generar notificaciones antes de actualizar la crónica de suscripción SubscriberHistory. Debería agregar esta regla a la regla de suscripción que genera notificaciones, y no colocarla en una nueva regla de suscripción.

Para obtener más información acerca de las reglas de suscripción, vea Definir reglas de suscripción.

Vea también

Conceptos

Definir crónicas para una clase de evento

Otros recursos

Definir clases de suscripción
UPDATE (Transact-SQL)
SET (Transact-SQL)
IF...ELSE (Transact-SQL)
EXISTS (Transact-SQL)
CREATE TABLE (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005