Compartilhar via


Service Broker com grupos de disponibilidade AlwaysOn (SQL Server)

Aplica-se a: SQL Server

Este tópico contém informações sobre como configurar o Service Broker para funcionar com o Grupos de disponibilidade AlwaysOn no SQL Server.

Receber mensagens remotas de outras instâncias do Service Broker

  1. Verifique se o grupo de disponibilidade tem um ouvinte.

    Para obter mais informações, confira Criar ou configurar um ouvinte do grupo de disponibilidade (SQL Server).

  2. Verifique se o ponto de extremidade do Service Broker existe e se está configurado corretamente.

    Em toda instância do SQL Server que hospeda uma réplica de disponibilidade para o grupo de disponibilidade, configure o ponto de extremidade do Service Broker, da seguinte maneira:

    • Defina LISTENER_IP como 'ALL'. Esta configuração habilitará conexões em qualquer endereço IP válido que estiver associado ao ouvinte do grupo de disponibilidade.

    • Defina a PORT do Service Broker como o mesmo número de porta em todas as instâncias do servidor de host.

      Dica

      Para exibir o número da porta do ponto de extremidade do Service Broker em determinada instância de servidor, consulte a coluna port da exibição de catálogo sys.tcp_endpoints , em que type_desc = 'SERVICE_BROKER'.

    O exemplo a seguir cria um ponto de extremidade do Service Broker autenticado do Windows que usa a porta de Service Broker padrão (4022) e escuta todos os endereços IP válidos.

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

    Para obter mais informações, veja CREATE ENDPOINT (Transact-SQL).

    Observação

    O SQL Server Service Broker não tem reconhecimento MultiSubnet. Defina RegisterAllProvidersIP como 0 e verifique se o cluster tem a permissão necessária no DNS para usar endereços IP estáticos. Confira configurar o ouvinte do grupo de disponibilidade para saber mais. O Service Broker pode atrasar a mensagem com o status "CONVERSING" tentando usar um endereço IP desabilitado.

  3. Conceda a permissão CONNECT no ponto de extremidade.

    Conceda permissão CONNECT no ponto de extremidade do Service Broker para PUBLIC ou para um logon.

    O exemplo a seguir concede a conexão em um ponto de extremidade do Service Broker nomeado broker_endpoint para PUBLIC.

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

    Para obter mais informações, confira GRANT (Transact-SQL).

  4. Verifique se msdb contém uma rota AutoCreatedLocal ou uma rota para o serviço específico.

    Observação

    Por padrão, cada banco de dados de usuário, inclusive msdb, contém a rota AutoCreatedLocal. Essa rota corresponde a qualquer nome de serviço e instância do broker e especifica que a mensagem deve ser entregue na instância atual. AutoCreatedLocal tem prioridade inferior a rotas que especificam explicitamente um serviço que se comunica com uma instância remota.

    Para obter informações sobre como criar rotas, confira Exemplos de roteamento do Service Broker [na versão do SQL Server 2008 R2 (10.50.x) dos Manuais Online] e CREATE ROUTE (Transact-SQL).

Requisitos para enviar mensagens para um serviço remoto em um grupo de disponibilidade

  1. Criar uma rota para o serviço de destino.

    Configure a rota da seguinte maneira:

    • Defina ADDRESS como o endereço IP de ouvinte de grupo de disponibilidade que hospeda o banco de dados de serviço.

    • Defina PORT como a porta que você especificou no ponto de extremidade do Service Broker de cada instância remota do SQL Server.

    O exemplo a seguir cria uma rota nomeada RouteToTargetService para o serviço ISBNLookupRequestService . A rota destina-se ao ouvinte do grupo de disponibilidade, MyAgListener, que usa a porta 4022.

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

    Para obter mais informações, confira CREATE ROUTE (Transact-SQL).

  2. Verifique se msdb contém uma rota AutoCreatedLocal ou uma rota para o serviço específico. (Para obter mais informações, veja Requisitos para que um serviço em um grupo de disponibilidade receba mensagens remotas, acima neste tópico.)

Related Tasks

Consulte Também

Visão geral dos Grupos de Disponibilidade AlwaysOn (SQL Server)
Ouvintes do grupo de disponibilidade, conectividade de cliente e failover de aplicativo (SQL Server)
SQL Server Service Broker