Service Broker con grupos de disponibilidad AlwaysOn (SQL Server)

Se aplica a:SQL Server

Este tema contiene información acerca de la configuración de Service Broker para que funcione con Grupos de disponibilidad AlwaysOn en SQL Server.

Recepción de mensajes remotos de otras instancias de Service Broker

  1. Asegúrese de que el grupo de disponibilidad tiene un agente de escucha.

    Para más información, consulte Creación o configuración de una escucha de grupo de disponibilidad (SQL Server).

  2. Asegúrese de que el extremo de Service Broker existe y está correctamente configurado.

    En cada instancia de SQL Server que hospede una réplica de disponibilidad para el grupo de disponibilidad, configure el extremo de Service Broker del modo siguiente:

    • Establezca LISTENER_IP en 'ALL'. Este valor permite las conexiones en cualquier dirección IP válida enlazada al agente de escucha del grupo de disponibilidad.

    • Establezca el valor PORT de Service Broker en el mismo número de puerto en todas las instancias del servidor host.

      Sugerencia

      Para ver el número de puerto del punto de conexión de Service Broker en una instancia de servidor determinada, consulte la columna port de la vista de catálogo sys.tcp_endpoints , donde type_desc = 'SERVICE_BROKER'.

    En el ejemplo siguiente se crea un extremo de Service Broker autenticado por Windows que utiliza el puerto predeterminado de Service Broker (4022) y escucha en todas las direcciones IP válidas.

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

    Para obtener más información, vea CREATE ENDPOINT (Transact-SQL).

    Nota:

    SQL Server Service Broker no reconoce múltiples subredes. Establezca RegisterAllProvidersIP en 0 y compruebe que el clúster tiene el permiso necesario en DNS para usar direcciones IP estáticas. Consulte Configuración del agente de escucha del grupo de disponibilidad para obtener más información. Service Broker puede retrasar el mensaje con el estado "CONVERSING" al intentar usar la dirección IP deshabilitada.

  3. Conceda el permiso CONNECT para usar el extremo.

    Conceda el permiso CONNECT para usar el extremo de Service Broker a PUBLIC o a un inicio de sesión.

    En el siguiente ejemplo se concede la conexión para usar un extremo de Service Broker denominado broker_endpoint a PUBLIC.

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

    Para más información, consulte GRANT (Transact-SQL).

  4. Asegúrese de que msdb contiene una ruta AutoCreatedLocal o una ruta al servicio específico.

    Nota:

    De forma predeterminada, todas las bases de datos de usuario, incluida msdb, contienen la ruta AutoCreatedLocal. Esta ruta coincide con cualquier nombre de servicio e instancia de agente, y especifica que el mensaje debe entregarse en la instancia actual. AutoCreatedLocal tiene una prioridad menor que las rutas que especifican explícitamente un servicio específico que se comunica con una instancia remota.

    Para más información sobre cómo crear rutas, consulte Ejemplos de enrutamiento de Service Broker (en la versión de SQL Server 2008 R2 (10.50.x) de Libros en pantalla) y CREATE ROUTE (Transact-SQL).

Requisitos para enviar mensajes a un servicio remoto en un grupo de disponibilidad

  1. Cree una ruta al servicio de destino.

    Configure la ruta del modo siguiente:

    • Establezca ADDRESS en la dirección IP del agente de escucha del grupo de disponibilidad que hospeda la base de datos de servicio.

    • Establezca PORT en el puerto especificado en el extremo de Service Broker de cada instancia de SQL Server remota.

    En el ejemplo siguiente se crea una ruta denominada RouteToTargetService para el servicio ISBNLookupRequestService . La ruta tiene como destino el agente de escucha del grupo de disponibilidad, MyAgListener, que utiliza el puerto 4022.

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

    Para más información, consulte CREATE ROUTE (Transact-SQL).

  2. Asegúrese de que msdb contiene una ruta AutoCreatedLocal o una ruta al servicio específico. (Para obtener más información, vea Requisitos de un servicio en un grupo de disponibilidad para que reciba mensajes remotos, anteriormente en este tema).

Related Tasks

Consulte también

Información general de los grupos de disponibilidad AlwaysOn (SQL Server)
Agentes de escucha del grupo de disponibilidad, conectividad de cliente y conmutación por error de una aplicación (SQL Server)
SQL Server Service Broker