Компонент Service Broker с группами доступности AlwaysOn (SQL Server)

Применимо к:SQL Server

В этом разделе содержатся сведения о настройке компонента Service Broker для работы с Группы доступности AlwaysOn в SQL Server.

Получение удаленных сообщений от других экземпляров Компонента Service Broker

  1. Убедитесь, что группа доступности имеет прослушиватель.

    Дополнительные сведения см. в разделе Создание или настройка прослушивателя группы доступности (SQL Server).

  2. Убедитесь, что конечная точка компонента Service Broker существует и правильно настроена.

    В каждом экземпляре SQL Server , где размещается реплика доступности для группы доступности, настройте конечную точку компонента Service Broker следующим образом.

    • Установите параметр LISTENER_IP в значение ALL. Этот параметр разрешает соединения по любому допустимому IP-адресу, привязанному к прослушивателю группы доступности.

    • Установите в параметре PORT компонента Service Broker одинаковый номер порта во всех экземплярах сервера.

      Совет

      Чтобы просмотреть номер порта конечной точки компонента Service Broker в заданном экземпляре сервера, запросите столбец port представления каталога sys.tcp_endpoints , где type_desc = 'SERVICE_BROKER'.

    В следующем примере создается конечная точка компонента Service Broker с проверкой подлинности Windows, которая использует порт компонента Service Broker по умолчанию (4022) и прослушивает все допустимые IP-адреса.

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

    Дополнительные сведения см. в разделе Создание внешнего источника данных (Transact-SQL).

    Примечание

    Компонент SQL Server Service Broker не поддерживает несколько подсетей. Задайте для параметра RegisterAllProvidersIP значение 0 и убедитесь, что кластер имеет необходимое разрешение в DNS для использования статических IP-адресов. Дополнительные сведения см. в разделе Настройка прослушивателя группы доступности. При попытке использовать отключенный IP-адрес Service Broker может отложить сообщение с состоянием CONVERSING.

  3. Предоставьте разрешение CONNECT на конечную точку.

    Предоставьте разрешение CONNECT на конечную точку компонента Service Broker роли PUBLIC или некоторому имени входа.

    В следующем примере разрешение на подключение к конечной точке компонента Service Broker с именем broker_endpoint предоставляется роли PUBLIC.

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

    Дополнительные сведения см. в статье GRANT (Transact-SQL).

  4. Убедитесь, что база данных msdb содержит маршрут AutoCreatedLocal или маршрут к некоторой службе.

    Примечание

    По умолчанию все пользовательские базы данных, включая msdb, содержат маршрут AutoCreatedLocal. Он соответствует имени любой службы и любому экземпляру компонента Service Broker и указывает, что сообщение должно быть доставлено внутри текущего экземпляра. МаршрутAutoCreatedLocal имеет более низкий приоритет, чем маршруты, в которых явно указывается служба, обменивающаяся данными с удаленным экземпляром.

    Сведения о создании маршрутов см. в разделах Примеры маршрутизации компонента Service Broker (в SQL Server 2008 R2 (10.50.x) электронной документации) и CREATE ROUTE (Transact-SQL).

Требования к отправке сообщений удаленной службе в группе доступности

  1. Создайте маршрут к целевой службе.

    Настройте маршрут следующим образом.

    • Задайте в параметре ADDRESS IP-адрес прослушивателя группы доступности, в которой размещается база данных службы.

    • Задайте в параметре PORT порт, указанный в конечной точке компонента Service Broker в каждом из удаленных экземпляров SQL Server.

    В следующем примере создается маршрут с именем RouteToTargetService для службы ISBNLookupRequestService . Маршрут ведет к прослушивателю группы доступности MyAgListener, который использует порт 4022.

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

    Дополнительные сведения см. в статье CREATE ROUTE (Transact-SQL).

  2. Убедитесь, что база данных msdb содержит маршрут AutoCreatedLocal или маршрут к некоторой службе. (Дополнительные сведения см. в подразделе Требования к службе в группе доступности для получения удаленных сообщенийвыше.)

Связанные задачи

См. также:

Обзор групп доступности AlwaysOn SQL Server)
Прослушиватели групп доступности, возможность подключения клиентов и отработка отказа приложений (SQL Server)
SQL Server Service Broker