Lección 11: Enviar eventos a la aplicación Weather
En este paso, utilizará una secuencia de comandos Transact-SQL para enviar eventos a la aplicación Weather y luego verá las notificaciones resultantes.
Datos de eventos
Los eventos son datos que la aplicación de notificación utiliza para generar notificaciones. Las consultas de generación de notificaciones que se escriben combinan datos de eventos y datos de suscripción para producir notificaciones, como la consulta de la lección 5.
Las consultas que generan notificaciones se generan en cada cuanto de generador que tiene datos por procesar. En cada cuanto en el que llegan uno o más lotes de eventos se ejecutan reglas de eventos. Las reglas programadas se ejecutan en cualquier cuanto que tenga suscripciones programadas que vayan a procesarse.
Si no hay datos de evento, no existe ningún motivo para ejecutar estas reglas. Por consiguiente, no se producen notificaciones.
Eventos de WeatherData
En esta aplicación, enviará un lote de eventos mediante los procedimientos almacenados de envío de eventos. En primer lugar, utilizará el procedimiento almacenado NSEventBeginBatchWeatherData para abrir un lote de eventos. Especificará el proveedor de eventos no albergado WeatherSPEventProvider como proveedor de eventos, que ha definido en la lección 6.
Advertencia: |
---|
No ejecute estas instrucciones por separado. Se trata de instrucciones que abren y cierran un lote de eventos y deben ejecutarse en la misma transacción. Para ejecutar estas consultas, ejecute la secuencia de comandos AddWeatherEvents.sql, como se indica más adelante en esta lección. |
-- Use the weather application's database.
USE TutorialWeather;
-- Start an event batch.
DECLARE @BatchID bigint;
EXEC dbo.NSEventBeginBatchWeatherData N'WeatherSPEventProvider', @BatchID OUTPUT;
Una vez que haya creado el lote de eventos, utilice el procedimiento almacenado NSEventWriteWeatherData para agregar tres eventos de Weather. Debe proporcionar el Id. del lote de eventos y luego especificar los valores de los campos de evento. El siguiente es un evento de ejemplo:
-- 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'
Una vez que haya utilizado este procedimiento almacenado para enviar tres eventos, utilizará NSEventFlushBatchWeatherData para cerrar el lote de eventos y enviarlo a la base de datos de la aplicación.
-- Flush event batch.
EXEC dbo.NSEventFlushBatchWeatherData @BatchID;
Puede mostrar el Id. de lote de eventos de manera que pueda utilizar las vistas y los procedimientos almacenados para ver información sobre el lote de eventos.
-- Display event batch ID
SELECT @BatchID 'Event Batch';
Enviar eventos a la aplicación Weather
Utilice la consulta AddWeatherEvents.sql para agregar eventos a la aplicación Weather.
Para enviar eventos a la aplicación Weather
En el Explorador de soluciones, expanda Weather y Consultas y, a continuación, abra AddWeatherEvents.sql.
Revise el código Transact-SQL.
Presione F5 para ejecutar la consulta.
Debe recibir dos conjuntos de resultados. El primer conjunto de resultados devuelve el valor 3 para EventCount. El segundo conjunto de resultados devuelve el valor 1 para event batch ID.
Ver datos de eventos
Utilice la consulta ViewWeatherEvents.sql para ver los eventos que acaba de agregar.
Para ver datos de eventos
En el Explorador de soluciones, abra el archivo ViewWeatherEvents.sql.
Revise el código Transact-SQL.
Presione F5 para ejecutar la consulta.
Si ha enviado varios lotes de eventos, modifique el parámetro EventBatchId según corresponda.
Ver notificaciones
Transcurridos 30 segundos aproximadamente, Notification Services debe haber creado un archivo FileNotifications.htm en la carpeta Notificaciones. Abra este archivo para ver los datos de notificación. Debe recibir tres notificaciones parecidas a las siguientes:
- 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 high 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 high 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 high 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.
Puesto que utiliza el protocolo de entrega File integrado, todas las notificaciones generadas a partir de estos eventos se encuentran en un archivo. Si envía más eventos, las notificaciones adicionales se agregarán a este archivo.
Observe también que hay un encabezado para cada notificación. Este encabezado muestra información sobre la notificación, incluyendo el Id. del suscriptor y la dirección del dispositivo. El texto real de la notificación empieza después de "Body:".
Solucionar problemas
Si, transcurrido un minuto, no ve el archivo FileNotifications.htm en la carpeta Notificaciones, vea el registro de la aplicación en el Visor de sucesos de Windows para ver los eventos de Notification Services. Es posible que el servicio de Windows no tenga permiso para escribir en la carpeta Notificaciones.
Para ver información sobre las notificaciones generadas para la clase de notificación WeatherNotifications, ejecute la consulta ViewNotifications.sql.
Para ver información sobre las notificaciones
En el Explorador de soluciones, expanda Tiempo y Consultas y, a continuación, haga doble clic en ViewNotifications.sql.
Presione F5 para ejecutar la consulta.
Busque en la columna DeliveryStatusDescription información relativa a la entrega de la notificación. Si hay algún error, debería proporcionarse información adicional en el registro de la aplicación.
Cierre ViewSubscribersAndDevices.sql.
¿Qué debe hacer a continuación?
En este tutorial se le ha mostrado cómo generar un prototipo sencillo para una aplicación de Notification Services. Para obtener más información sobre Notification Services, utilice los recursos siguientes:
Vea también
Conceptos
Tutorial de Notification Services
Otros recursos
Crear soluciones de notificación
Introducción a SQL Server Notification Services