Service Broker con i gruppi di disponibilità Always On (SQL Server)

Si applica a:SQL Server

Questo argomento contiene informazioni su come configurare Service Broker con i Gruppi di disponibilità Always On in SQL Server.

Ricevere messaggi remoti da altre istanze di Service Broker

  1. Assicurarsi che nel gruppo di disponibilità sia disponibile un listener.

    Per altre informazioni, vedere Creare o configurare un listener del gruppo di disponibilità (SQL Server).

  2. Assicurarsi che l'endpoint di Service Broker sia presente e che sia configurato correttamente.

    In ogni istanza di SQL Server in cui è ospitata una replica di disponibilità per il gruppo di disponibilità, configurare l'endpoint di Service Broker come riportato di seguito:

    • Impostare LISTENER_IP su 'ALL'. Con questa impostazione vengono abilitate le connessioni in qualsiasi indirizzo IP valido associato al listener del gruppo di disponibilità.

    • Impostare la porta di Service Broker sullo stesso numero di porta in tutte le istanze del server host.

      Suggerimento

      Per visualizzare il numero di porta dell'endpoint di Service Broker in un'istanza del server specifica, eseguire una query sulla colonna port della vista del catalogo sys.tcp_endpoints , dove type_desc = 'SERVICE_BROKER'.

    Nell'esempio seguente viene creato un endpoint di Service Broker con autenticazione di Windows in cui viene utilizzata la porta predefinita di Service Broker (4022) e si è in ascolto di tutti gli indirizzi IP validi.

    CREATE ENDPOINT [SSBEndpoint]  
        STATE = STARTED  
        AS TCP  (LISTENER_PORT = 4022, LISTENER_IP = ALL )  
        FOR SERVICE_BROKER (AUTHENTICATION = WINDOWS)  
    

    Per altre informazioni, vedere CREATE ENDPOINT (Transact-SQL).

    Nota

    SQL Server Service Broker non è compatibile con le subnet multiple. Impostare RegisterAllProvidersIP su 0 e verificare che il cluster disponga delle autorizzazioni necessarie in DNS per l'uso di indirizzi IP statici. Per altre informazioni, vedere Configurare il listener del gruppo di disponibilità. È possibile che Service Broker ritardi i messaggi con stato "CONVERSING" che tentano di usare un indirizzo IP non disabilitato.

  3. Concedere l'autorizzazione CONNECT nell'endpoint.

    Concedere l'autorizzazione CONNECT per l'endpoint di Service Broker al ruolo PUBLIC o a un account di accesso.

    Nell'esempio seguente viene concessa la connessione in un endpoint di Service Broker denominato broker_endpoint al ruolo PUBLIC.

    GRANT CONNECT ON ENDPOINT::[broker_endpoint] TO [PUBLIC]  
    

    Per altre informazioni, vedere GRANT (Transact-SQL).

  4. Assicurarsi che msdb contenga una route AutoCreatedLocal o una route al servizio specifico.

    Nota

    Per impostazione predefinita, tutti i database utente, incluso msdb, contengono la route AutoCreatedLocal. Questa route corrisponde a qualsiasi nome di servizio e istanza di Service Broker e, tramite essa, viene specificato che il messaggio deve essere recapitato all'interno dell'istanza corrente. AutoCreatedLocal ha una priorità inferiore rispetto alle route che specifica esplicitamente un servizio specifico usato per comunicare con un'istanza remota.

    Per informazioni sulla creazione di route, vedere Esempi di routing di Service Broker nella versione SQL Server 2008 R2 (10.50.x) della documentazione online e CREATE ROUTE (Transact-SQL).

Requisiti per inviare messaggi a un servizio remoto in un gruppo di disponibilità

  1. Creare una route al servizio di destinazione.

    Configurare la route come riportato di seguito:

    • Impostare ADDRESS sull'indirizzo IP del listener del gruppo di disponibilità in cui è ospitato il database del servizio.

    • Impostare PORT sulla porta specificata nell'endpoint di Service Broker di ogni istanza remota di SQL Server.

    Nell'esempio seguente viene creata una route denominata RouteToTargetService per il servizio ISBNLookupRequestService . La route è destinata al listener del gruppo di disponibilità, MyAgListener, da cui viene utilizzata la porta 4022.

    CREATE ROUTE [RouteToTargetService] WITH   
    SERVICE_NAME = 'ISBNLookupRequestService',   
    ADDRESS = 'TCP://MyAgListener:4022';  
    
    

    Per altre informazioni, vedere CREATE ROUTE (Transact-SQL).

  2. Assicurarsi che msdb contenga una route AutoCreatedLocal o una route al servizio specifico. Per altre informazioni, vedere Requisiti necessari affinché i messaggi remoti vengano ricevuti da un servizio in un gruppo di disponibilitàpiù indietro in questo argomento.

Attività correlate

Vedi anche

Panoramica di Gruppi di disponibilità AlwaysOn (SQL Server)
Listener del gruppo di disponibilità, connettività client e failover dell'applicazione (SQL Server)
SQL Server Service Broker