Implementazione di notifiche degli eventiImplement Event Notifications

Per implementare una notifica degli eventi, è necessario prima creare un servizio di destinazione che riceverà le notifiche degli eventi.To implement an event notification, you must first create a target service to receive event notifications, and then create the event notification.

Importante

Service BrokerService Broker per le notifiche degli eventi che prevedono l'invio di messaggi a Service Broker su un server remoto. Service BrokerService Broker dialog security should be configured for event notifications that send messages to a service broker on a remote server. La sicurezza del dialogo deve essere configurata manualmente in base al modello di sicurezza avanzata.Dialog security must be configured manually according to the full security model.

Creazione del servizio di destinazioneCreating the Target Service

Non è necessario creare un servizio di origine di Service BrokerService Brokerperché Service BrokerService Broker include il tipo di messaggio e di contratto seguente specifico per le notifiche degli eventi:You do not have to create a Service BrokerService Broker-initiating service because Service BrokerService Broker includes the following specific message type and contract for event notifications:

http://schemas.microsoft.com/SQL/Notifications/PostEventNotification  

Il servizio di destinazione che riceve le notifiche degli eventi deve rispettare il contratto esistente.The target service that receives event notifications must honor this preexisting contract.

Per creare un server di destinazione:To create a target service:

  1. Creare una coda per ricevere messaggi.Create a queue to receive messages.

    Nota

    La coda riceve il tipo di messaggio seguente: http://schemas.microsoft.com/SQL/Notifications/QueryNotification.The queue receives the following message type: http://schemas.microsoft.com/SQL/Notifications/QueryNotification.

  2. Creare un servizio nella coda che faccia riferimento al contratto per le notifiche degli eventi.Create a service on the queue that references the event notifications contract.

  3. Creare una route nel servizio per definire l'indirizzo a cui verranno inviati i messaggi per il servizio tramite Service BrokerService Broker .Create a route on the service to define the address to which Service BrokerService Broker sends messages for the service. Per le notifiche dell'evento la cui destinazione è rappresentata da un servizio nello stesso database, specificare ADDRESS = 'LOCAL'.For event notifications that target a service in the same database, specify ADDRESS = 'LOCAL'.

    Nota

    Service BrokerService Broker Il routing determina il servizio che riceve i messaggi di notifica. routing determines the service that receives the notification messages. Se la destinazione della notifica degli eventi è rappresentata da un servizio in un server remoto, il server di origine e il server di destinazione dovranno entrambi disporre di route definite che assicurino la corretta comunicazione bidirezionale.If the event notification targets a service on a remote server, both the source server and the target server must have routes defined on them to make sure that two-way communication occurs.

    Nell'esempio seguente vengono creati una coda, un servizio nella coda e una route nel servizio per gestire i messaggi provenienti dal contratto per le notifiche degli eventi.The following example creates a queue, a service on the queue, and a route on the service to handle messages from the event notification contract.

CREATE QUEUE NotifyQueue ;  
GO  
CREATE SERVICE NotifyService  
ON QUEUE NotifyQueue  
(  
[http://schemas.microsoft.com/SQL/Notifications/PostEventNotification]  
);  
GO  
CREATE ROUTE NotifyRoute  
WITH SERVICE_NAME = 'NotifyService',  
ADDRESS = 'LOCAL';  
GO  

Creazione della notifica degli eventiCreating the Event Notification

Le notifiche degli eventi vengono create utilizzando l'istruzione Transact-SQLTransact-SQL CREATE EVENT NOTIFICATION e vengono eliminate utilizzando l'istruzione DROP EVENT NOTIFICATION.Event notifications are created by using the Transact-SQLTransact-SQL CREATE EVENT NOTIFICATION statement, and are dropped by using the DROP EVENT NOTIFICATION STATEMENT. Per modificare la notifica di un evento, è necessario eliminarla e quindi ricrearla.To modify an event notification, you must drop and re-create the event notification.

Nell'esempio seguente viene creata la notifica di evento CreateDatabaseNotification.The following example creates the event notification CreateDatabaseNotification. Per ogni evento CREATE_DATABASE generato nel server, questa notifica invia un messaggio al servizio NotifyService creato in precedenza.This notification sends a message about any CREATE_DATABASE event that occurs on the server to the NotifyService service that was previously created.

CREATE EVENT NOTIFICATION CreateDatabaseNotification  
ON SERVER  
FOR CREATE_DATABASE  
TO SERVICE 'NotifyService', '8140a771-3c4b-4479-8ac0-81008ab17984' ;  
Attenzione

Le notifiche degli eventi riconoscono gli eventi CREATE_SCHEMA e le definizioni delle istruzioni CREATE SCHEMA come eventi distinti.Event notifications recognize CREATE_SCHEMA events and the definitions of CREATE SCHEMA statements as separate events. Si supponga ad esempio di creare una notifica di evento in entrambi gli eventi CREATE_SCHEMA e CREATE_TABLE e di eseguire il batch seguente.For example, an event notification is created on both the CREATE_SCHEMA and CREATE_TABLE events, and you run the following batch.

CREATE SCHEMA s

CREATE TABLE t1 (col1 int)

In questo caso la notifica dell'evento viene generata due volte, una prima volta quando viene generato l'evento CREATE_SCHEMA e una seconda volta quando viene generato l'evento CREATE_TABLE.In this case, the event notification is raised two times: Onne time when the CREATE_SCHEMA event occurs, and again when the CREATE_TABLE event occurs. È consigliabile non creare notifiche degli eventi sia negli eventi CREATE_SCHEMA che nel testo delle definizioni CREATE SCHEMA corrispondenti. In alternativa, compilare nell'applicazione la logica necessaria a evitare di acquisire dati per eventi non desiderati.We recommend that you either avoid creating event notifications on both the CREATE_SCHEMA events and the texts of any corresponding CREATE SCHEMA definitions, or build logic into your application to avoid capturing unwanted event data.

Per creare la notifica di un eventoTo create an event notification

Vedere ancheSee Also

Recupero di informazioni sulle notifiche degli eventi Get Information About Event Notifications
EVENTDATA (Transact-SQL) EVENTDATA (Transact-SQL)