Share via


Lezione 11: Inoltro di eventi all'applicazione Weather

In questo passaggio si utilizzerà uno script Transact-SQL per inoltrare eventi all'applicazione Weather e visualizzare le notifiche risultanti.

EventData

Gli eventi sono dati utilizzati dall'applicazione di notifica per generare notifiche. Le query di generazione delle notifiche scritte dall'utente, ad esempio quella nella lezione 5, consentono di unire in join i dati di evento e quelli di sottoscrizione allo scopo di produrre le notifiche.

Le query che generano notifiche vengono attivate durante ogni quantum del generatore che ha dati da elaborare. Le regole degli eventi vengono eseguite in qualunque quantum in cui siano arrivati uno o più batch di eventi. Le regole pianificate vengono eseguite in qualunque quantum in cui siano presenti sottoscrizioni pianificate di cui è prevista l'elaborazione.

In mancanza di dati di evento, non vi è ragione di eseguire regole, di conseguenza non vengono prodotte notifiche.

WeatherData Events

Per questa applicazione si inoltrerà un batch di eventi utilizzando le stored procedure per l'inoltro degli eventi. Innanzitutto si utilizzerà la stored procedure NSEventBeginBatchWeatherData per aprire un batch di eventi. Si specificherà il provider di eventi non hosted WeatherSPEventProvider, definito nella lezione 6, come provider di eventi.

ms170427.Caution(it-it,SQL.90).gifAttenzione:
Non eseguire queste istruzioni singolarmente: aprono e chiudono un batch di eventi e devono essere eseguite nella stessa transazione. Per eseguire queste query, eseguire lo script AddWeatherEvents.sql, come documentato più avanti in questa lezione.
-- Use the weather application's database.
USE TutorialWeather;
-- Start an event batch.
DECLARE @BatchID bigint;
EXEC dbo.NSEventBeginBatchWeatherData N'WeatherSPEventProvider', @BatchID OUTPUT;

Dopo aver creato il batch di eventi, si utilizza la stored procedure NSEventWriteWeatherData per aggiungere tre eventi Weather. È necessario indicare l'ID del batch di eventi e quindi i valori per i campi di eventi. Di seguito è riportato un evento di esempio:

-- Submit events.
EXEC dbo.NSEventWriteWeatherData
    @EventBatchId=@BatchID,
    @City=N'Seattle',
    @Date=CONVERT(DATETIME, '2005-04-20 13:00:00', 120),
    @Low = 31,
    @High = 52,
    @Forecast=N'Sunny'

Dopo aver utilizzato questa stored procedure per inoltrare tre eventi, si utilizzerà NSEventFlushBatchWeatherData per chiudere il batch di eventi e inoltrarlo al database dell'applicazione.

-- Flush event batch.
EXEC dbo.NSEventFlushBatchWeatherData @BatchID;

È possibile visualizzare l'ID del batch di eventi in modo da poter utilizzare le viste e le stored procedure per visualizzare le informazioni sul batch di eventi.

-- Display event batch ID
SELECT @BatchID 'Event Batch';

Inoltro di eventi all'applicazione Weather

Utilizzare la query AddWeatherEvents.sql per aggiungere eventi all'applicazione Weather.

Per inoltrare eventi all'applicazione Weather

  1. In Esplora soluzioni, espandere Weather, espandere Query e aprire AddWeatherEvents.sql.

  2. Esaminare il codice Transact-SQL.

  3. Premere F5 per eseguire la query.

    Si dovranno ricevere due set di risultati. Il primo set di risultati restituisce un valore EventCount pari a 3. Il secondo restituisce un Event Batch ID pari a 1.

Visualizzazione dei dati degli eventi

Utilizzare la query ViewWeatherEvents.sql per visualizzare gli eventi appena aggiunti.

Per visualizzare i dati degli eventi

  1. In Esplora soluzioni aprire il file ViewWeatherEvents.sql.

  2. Esaminare il codice Transact-SQL.

  3. Premere F5 per eseguire la query.

Se sono stati inoltrati più batch di eventi, modificare il parametro EventBatchId in modo appropriato.

Visualizzazione delle notifiche

Dopo circa 30 secondi, Notification Services dovrebbe aver creato un file FileNotifications.htm nella cartella Notifications. Aprire questo file per visualizzare i dati di notifica. Dovrebbero essere ricevute tre notifiche analoghe alle seguenti:

  • Notification Id: 1 Notification Class Name: WeatherNotifications Subscriber Id: stephanie Device Address: stephanie@adventure-works.com Protocol Fields: Body: Weather report for the city of Seattle [2/21/2005 2:01:00 PM]: Sunny
    Expected low temperature : 31 F.
    Expected low temperature : 52 F.
    For more information, visit our web site at http://www.msnbc.com/news/wea\_front.asp?ta=y\&tab=BW\&tp=\&czstr=Seattle
    Thank you for using SQL Server Notification Services.
  • Notification Id: 2 Notification Class Name: WeatherNotifications Subscriber Id: david Device Address: david@adventure-works.com Protocol Fields: Body: Weather report for the city of Orlando [2/22/2005 2:01:00 AM]: Partly Cloudy
    Expected low temperature : 59 F.
    Expected low temperature : 81 F.
    For more information, visit our web site at http://www.msnbc.com/news/wea\_front.asp?ta=y\&tab=BW\&tp=\&czstr=Orlando
    Thank you for using SQL Server Notification Services.
  • Notification Id: 3 Notification Class Name: WeatherNotifications Subscriber Id: richard Device Address: richard@adventure-works.com Protocol Fields: Body: Weather report for the city of Seattle [2/21/2005 2:01:00 PM]: Sunny
    Expected low temperature : 31 F.
    Expected low temperature : 52 F.
    For more information, visit our web site at http://www.msnbc.com/news/wea\_front.asp?ta=y\&tab=BW\&tp=\&czstr=Seattle
    Thank you for using SQL Server Notification Services.

Dal momento che si utilizza il protocollo di recapito File predefinito, tutte e tre le notifiche generate dagli eventi sono in un solo file. Se si inoltrano più eventi, le notifiche aggiuntive verranno accodate a questo file.

Notare inoltre che vi è un'intestazione per ogni notifica. Questo mostra le informazioni sulla notifica, incluso l'ID sottoscrittore e l'indirizzo del dispositivo. Il testo effettivo della notifica inizia dopo "Body:".

Risoluzione dei problemi

Se il file FileNotifications.htm nella cartella Notifications non è visibile entro un minuto, cercare nel registro applicazioni del Visualizzatore eventi di Windows gli eventi provenienti da Notification Services. Servizio Windows potrebbe non avere l'autorizzazione alla scrittura nella cartella Notifications.

È possibile visualizzare informazioni sulle notifiche generate per la classe di notifica WeatherNotifications eseguendo la query ViewNotifications.sql.

Per visualizzare informazioni sulle notifiche

  1. In Esplora soluzioni espandere Weather, espandere Query e fare doppio clic su ViewNotifications.sql.

  2. Premere F5 per eseguire la query.

    Cercare nella colonna DeliveryStatusDescription per informazioni sul recapito delle notifiche. In caso di errori, dovrebbero essere disponibili ulteriori informazioni nel registro dell'applicazione.

  3. Chiudere ViewSubscribersAndDevices.sql.

Operazioni successive

Questa esercitazione ha mostrato come creare un prototipo semplice per un'applicazione Notification Services. Per continuare ad apprendere Notification Services, utilizzare le seguenti risorse:

Vedere anche

Concetti

Esercitazione di Notification Services

Altre risorse

Creazione di soluzioni di notifica
Introduzione a SQL Server Notification Services

Guida in linea e informazioni

Assistenza su SQL Server 2005