Condividi tramite


Implementazione di notifiche degli eventi

Per implementare una notifica degli eventi, è necessario prima creare un servizio di destinazione che riceverà le notifiche degli eventi.

Importante

È consigliabile configurare la sicurezza del dialogo di Service Broker per le notifiche degli eventi che prevedono l'invio di messaggi a Service Broker su un server remoto. La sicurezza del dialogo deve essere configurata manualmente in base al modello di sicurezza avanzata.

Creazione del servizio di destinazione

Non è necessario creare un servizio di avvio di Service Broker perché Service Broker include il tipo di messaggio e il contratto specifici seguenti per le notifiche degli eventi:

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

Il servizio di destinazione che riceve le notifiche degli eventi deve rispettare il contratto esistente.

Per creare un server di destinazione:

  1. Creare una coda per ricevere messaggi.

    Nota

    La coda riceve il tipo di messaggio seguente: https://schemas.microsoft.com/SQL/Notifications/QueryNotification.

  2. Creare un servizio nella coda che faccia riferimento al contratto per le notifiche degli eventi.

  3. Creare una route nel servizio per definire l'indirizzo a cui Service Broker invia messaggi per il servizio. Per le notifiche dell'evento la cui destinazione è rappresentata da un servizio nello stesso database, specificare ADDRESS = 'LOCAL'.

    Nota

    Il routing di Service Broker determina il servizio che riceve i messaggi di notifica. 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.

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.

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

Creazione della notifica degli eventi

Le notifiche degli eventi vengono create usando l'istruzione TRANSACT-SQL CREATE EVENT NOTIFICATION e vengono eliminate tramite DROP EVENT NOTIFICATION STATEMENT. Per modificare la notifica di un evento, è necessario eliminarla e quindi ricrearla.

Nell'esempio seguente viene creata la notifica di evento CreateDatabaseNotification. Per ogni evento CREATE_DATABASE generato nel server, questa notifica invia un messaggio al servizio NotifyService creato in precedenza.

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

Attenzione

Le notifiche degli eventi riconoscono CREATE_SCHEMA eventi e le <definizioni schema_element> di istruzioni CREATE SCHEMA come eventi separati. 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.

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. È consigliabile evitare di creare notifiche degli eventi sia negli eventi CREATE_SCHEMA che nei <testi schema_element> di qualsiasi definizione CREATE SCHEMA corrispondente oppure creare logica nell'applicazione per evitare di acquisire dati di eventi indesiderati.

Per creare la notifica di un evento

Per eliminare la notifica di un evento

Vedere anche

Recupero di informazioni sulle notifiche degli eventi
EVENTDATA (Transact-SQL)