Condividi tramite


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

In questo argomento sono contenute informazioni sulla configurazione di Service Broker per poter utilizzarlo con i Gruppi di disponibilità AlwaysOn in SQL Server 2012.

Contenuto dell'argomento:

  • Requisiti necessari affinché i messaggi remoti vengano ricevuti da un servizio in un gruppo di disponibilità

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

Requisiti necessari affinché i messaggi remoti vengano ricevuti da un servizio in un gruppo di disponibilità

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

    Per ulteriori 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.

      SuggerimentoSuggerimento

      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 ulteriori informazioni, vedere CREATE ENDPOINT (Transact-SQL).

  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 ulteriori informazioni, vedere GRANT (Transact-SQL).

  4. Assicurarsi che in msdb sia contenuta una route AutoCreatedLocal o una route al servizio specifico.

    [!NOTA]

    Per impostazione predefinita, in ogni database utente, incluso msdb, è contenuta 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 tramite cui viene specificato in modo esplicito un servizio specifico utilizzato 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 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 ulteriori informazioni, vedere CREATE ROUTE (Transact-SQL).

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

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

Attività correlate

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

Vedere anche

Concetti

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