Definizione di cronologie per una classe di sottoscrizione

Nelle tabelle della cronologia delle sottoscrizioni vengono memorizzati i dati delle sottoscrizioni da utilizzare in un'applicazione. È possibile, ad esempio, utilizzare una tabella della cronologia delle sottoscrizioni per archiviare le informazioni sull'ultima notifica recapitata a un sottoscrittore e generare la notifica successiva in base ai dati inseriti durante il periodo intermedio.

Utilizzi comuni delle cronologie delle sottoscrizioni

Nelle cronologie delle sottoscrizioni vengono in genere memorizzati dati sulle notifiche precedenti. Quando genera le notifiche, l'applicazione può utilizzare questi dati per determinare quando il sottoscrittore ha ricevuto l'ultima notifica o se il sottoscrittore ha ricevuto una notifica simile.

Un esempio di utilizzo di una tabella della cronologia di una sottoscrizione è rappresentato da un'applicazione in cui si desidera limitare l'invio a una notifica per ogni periodo di tempo per ogni sottoscrittore. È possibile definire una cronologia contenente una sola riga per sottoscrittore e con un timestamp che indica quando è stata generata l'ultima notifica.

Durante la generazione delle notifiche, è possibile includere una condizione per generare notifiche solo se il sottoscrittore non ha ricevuto notifiche nelle ultime 24 ore. In tal caso, è possibile aggiungere la notifica alla tabella delle notifiche e aggiornare il timestamp nella cronologia della sottoscrizione.

Tabelle della cronologia delle sottoscrizioni

Le cronologie delle sottoscrizioni vengono implementate come tabelle. Quando si definisce una classe di sottoscrizione, è possibile definire zero, una o più tabelle della cronologia tramite l'istruzione Transact-SQL CREATE TABLE. Questa istruzione deve includere il nome della tabella, i nomi dei campi e i tipi di dati dei campi. L'istruzione può inoltre includere argomenti per i vincoli e altri parametri CREATE TABLE facoltativi. È inoltre possibile includere un'istruzione CREATE INDEX per creare un indice nella tabella della cronologia degli eventi. Per ulteriori informazioni, vedere CREATE TABLE (Transact-SQL).

Notification Services non rinomina automaticamente le tabelle della cronologia delle sottoscrizioni quando si aggiorna l'applicazione, come accade per altre tabelle relative alle sottoscrizioni. Le istruzioni che creano una tabella della cronologia non vengono eseguite correttamente se esiste già un nome identico. Utilizzare la vista INFORMATION_SCHEMA.TABLES per verificare l'esistenza delle tabelle e quindi evitarne la creazione oppure eliminare e ricreare la tabella.

Nell'esempio riportato di seguito è illustrato come eliminare una tabella esistente denominata dbo.SubscriberHistory e quindi creare una cronologia per la classe di sottoscrizione StockSubscriptions con due colonne (SubscriberId e 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] Se si desidera definire un'applicazione in un file XML, è necessario sostituire i caratteri XML riservati, ad esempio '>', con i rispettivi riferimenti a entità. Per ulteriori informazioni, vedere XML Reserved Characters.

Per definire una tabella della cronologia di una sottoscrizione

Se si desidera definire un'applicazione tramite XML, definire le cronologie nel file di definizione dell'applicazione (ADF). Se l'applicazione viene definita a livello di programmazione, utilizzare gli oggetti NMO (Notification Services Management Objects) per definire le cronologie.

Aggiornamento delle cronologie delle sottoscrizioni

È possibile definire una o più query per modificare i dati delle tabelle della cronologia delle sottoscrizioni. Queste query inseriscono, aggiornano ed eliminano i dati nelle tabelle della cronologia per mantenerle in uno stato adeguato per l'utilizzo da parte dell'applicazione.

È necessario definire le regole di cronologia delle sottoscrizioni in una nuova regola di evento o di sottoscrizione pianificata oppure come parte di una nuova regola di sottoscrizione.

[!NOTA] L'ordine di esecuzione delle regole di evento e pianificate non è garantito.

Nel codice riportato di seguito viene illustrato come aggiornare la cronologia delle sottoscrizioni per un'applicazione relativa alle azioni di borsa. Nella cronologia viene registrata l'ultima generazione di una notifica per ogni sottoscrittore.

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;

Questa regola dipende dall'utilizzo della cronologia degli eventi per generare le notifiche prima di aggiornare la cronologia delle sottoscrizioni SubscriberHistory. È necessario aggiungere questa regola alla regola di sottoscrizione che genera le notifiche, senza inserirla in una nuova regola di sottoscrizione.

Per ulteriori informazioni sulle regole di sottoscrizione, vedere Definizione delle regole di sottoscrizione.

Vedere anche

Concetti

Definizione delle cronologie per una classe di evento

Altre risorse

Definizione delle classi di sottoscrizione
UPDATE (Transact-SQL)
SET (Transact-SQL)
IF...ELSE (Transact-SQL)
EXISTS (Transact-SQL)
CREATE TABLE (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005