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

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2016)noDatabase SQL di AzurenoAzure SQL Data WarehousenoParallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

In questo argomento sono contenute informazioni sulla configurazione di Service Broker per poter utilizzarlo con i Gruppi di disponibilità Always OnAlways On availability groups in SQL Server 2017SQL Server 2017.This topic contains information about configuring Service Broker to work with Gruppi di disponibilità Always OnAlways On availability groups in SQL Server 2017SQL Server 2017.

Contenuto dell'argomentoIn This Topic:

Requisiti necessari affinché i messaggi remoti vengano ricevuti da un servizio in un gruppo di disponibilità Requirements for a Service in an Availability Group to Receive Remote Messages

  1. Assicurarsi che nel gruppo di disponibilità sia disponibile un listener.Ensure that the availability group possesses a listener.

    Per altre informazioni, vedere Creare o configurare un listener del gruppo di disponibilità (SQL Server).For more information, see Create or Configure an Availability Group Listener (SQL Server).

  2. Assicurarsi che l'endpoint di Service Broker sia presente e che sia configurato correttamente.Ensure that the Service Broker endpoint exists and is correctly configured.

    In ogni istanza di SQL ServerSQL Server in cui è ospitata una replica di disponibilità per il gruppo di disponibilità, configurare l'endpoint di Service Broker come riportato di seguito:On every instance of SQL ServerSQL Server that hosts an availability replica for the availability group, configure the Service Broker endpoint, as follows:

    • Impostare LISTENER_IP su 'ALL'.Set LISTENER_IP to 'ALL'. Con questa impostazione vengono abilitate le connessioni in qualsiasi indirizzo IP valido associato al listener del gruppo di disponibilità.This setting enables connections on any valid IP address that is bound to the availability group listener.

    • Impostare la porta di Service Broker sullo stesso numero di porta in tutte le istanze del server host.Set the Service Broker PORT to the same port number on all the host server instances.

      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'.To view the port number of the Service Broker endpoint on a given server instance, query the port column of the sys.tcp_endpoints catalog view, where 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.The following example creates a Windows authenticated Service Broker endpoint that uses the default Service Broker port (4022) and listens to all valid IP addresses.

    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).For more information, see CREATE ENDPOINT (Transact-SQL).

  3. Concedere l'autorizzazione CONNECT nell'endpoint.Grant CONNECT permission on the endpoint.

    Concedere l'autorizzazione CONNECT per l'endpoint di Service Broker al ruolo PUBLIC o a un account di accesso.Grant CONNECT permission on the Service Broker endpoint either to PUBLIC or to a login.

    Nell'esempio seguente viene concessa la connessione in un endpoint di Service Broker denominato broker_endpoint al ruolo PUBLIC.The following example grants the connection on a Service Broker endpoint named broker_endpoint to PUBLIC.

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

    Per altre informazioni, vedere GRANT (Transact-SQL).For more information, see GRANT (Transact-SQL).

  4. Assicurarsi che msdb contenga una route AutoCreatedLocal o una route al servizio specifico.Ensure that msdb contains either an AutoCreatedLocal route or a route to the specific service.

    Nota

    Per impostazione predefinita, tutti i database utente, incluso msdb, contengono la route AutoCreatedLocal.By default, each user database, including msdb, contains the 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.This route matches any service name and broker instance and specifies that the message should be delivered within the current instance. AutoCreatedLocal ha una priorità inferiore rispetto alle route che specifica esplicitamente un servizio specifico usato per comunicare con un'istanza remota.AutoCreatedLocal has lower priority than routes that explicitly specify a specific service that communicates with a remote instance.

    Per informazioni sulla creazione di route, vedere Esempi di routing di Service Broker nella versione SQL Server 2008 R2SQL Server 2008 R2 della documentazione online e CREATE ROUTE (Transact-SQL).For information about creating routes, see Service Broker Routing Examples (in the SQL Server 2008 R2SQL Server 2008 R2 version of Books Online) and CREATE ROUTE (Transact-SQL).

Requisiti per inviare messaggi a un servizio remoto in un gruppo di disponibilità Requirements for Sending Messages to a Remote Service in an Availability Group

  1. Creare una route al servizio di destinazione.Create a route to the target service.

    Configurare la route come riportato di seguito:Configure the route as follows:

    • Impostare ADDRESS sull'indirizzo IP del listener del gruppo di disponibilità in cui è ospitato il database del servizio.Set ADDRESS to the listener IP address of availability group that hosts the service database.

    • Impostare PORT sulla porta specificata nell'endpoint di Service Broker di ogni istanza remota di SQL Server.Set PORT to the port that you specified in the Service Broker endpoint of each of the remote SQL Server instances.

      Nell'esempio seguente viene creata una route denominata RouteToTargetService per il servizio ISBNLookupRequestService .The following example creates a route named RouteToTargetService for the ISBNLookupRequestService service. La route è destinata al listener del gruppo di disponibilità, MyAgListener, da cui viene utilizzata la porta 4022.The route targets the availability group listener, MyAgListener, which uses port 4022.

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

    Per altre informazioni, vedere CREATE ROUTE (Transact-SQL).For more information, see CREATE ROUTE (Transact-SQL).

  2. Assicurarsi che msdb contenga una route AutoCreatedLocal o una route al servizio specifico.Ensure that msdb contains either an AutoCreatedLocal route or a route to the specific service. 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.(For more information, see Requirements for a Service in an Availability Group to Receive Remote Messages, earlier in this topic.)

Vedere ancheSee Also

Panoramica di Gruppi di disponibilità AlwaysOn (SQL Server) Overview of Always On Availability Groups (SQL Server)
Listener del gruppo di disponibilità, connettività client e failover dell'applicazione (SQL Server) Availability Group Listeners, Client Connectivity, and Application Failover (SQL Server)
SQL Server Service BrokerSQL Server Service Broker