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 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 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 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 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 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, 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