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 endpoint do Service Broker existe e se está configurado corretamente.

    Em cada 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, conforme a seguir:

    • 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 endpoint do Service Broker em uma 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, consulte CREATE ENDPOINT (Transact-SQL).

    Observação

    O SQL Server Service Broker não é compatível com 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. Consulte configurar o listener 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 a permissão CONNECT no endpoint do Service Broker a PUBLIC ou a um login.

    O exemplo a seguir concede permissão de conexão em um endpoint do Service Broker chamado SSBEndpoint ao PUBLIC.

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

    Para obter mais informações, consulte 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 a criação de rotas, consulte Exemplos de Roteamento do Service Broker (na versão SQL Server 2008 R2 (10.50.x) do Books 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 do listener do 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 tem como destino o listener 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, consulte 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.)

Tarefas Relacionadas

Consulte Também

Visão geral dos Grupos de Disponibilidade AlwaysOn (SQL Server)
Listeners do Grupo de Disponibilidade, Conectividade do Cliente e Failover de Aplicativos (SQL Server)
SQL Server Service Broker