Service Broker と AlwaysOn 可用性グループ (SQL Server)

このトピックでは、SQL Server 2012 で Service Broker を AlwaysOn 可用性グループ と共に使用できるように構成する方法について説明します。

このトピックの内容

  • 可用性グループのサービスでリモート メッセージを受信するための要件

  • 可用性グループのリモート サービスにメッセージを送信するための要件

可用性グループのサービスでリモート メッセージを受信するための要件

  1. 可用性グループにリスナーが存在している。

    詳細については、「可用性グループ リスナーの作成または構成 (SQL Server)」を参照してください。

  2. Service Broker エンドポイントが存在し、正しく構成されている。

    可用性グループの可用性レプリカをホストするすべての SQL Server のインスタンスで、次のように Service Broker エンドポイントを構成します。

    • LISTENER_IP を "ALL" に設定します。 この設定により、可用性グループ リスナーにバインドされている有効な IP アドレスに接続できるようになります。

    • すべてのホスト サーバー インスタンスで Service Broker の PORT を同じポート番号に設定します。

      ヒントヒント

      特定のサーバー インスタンスの Service Broker エンドポイントのポート番号を確認するには、sys.tcp_endpoints カタログ ビューの port 列に対してクエリを実行します (type_desc = 'SERVICE_BROKER')。

    次の例では、既定の Service Broker ポート (4022) を使用し、有効なすべての IP アドレスをリッスンする Windows 認証済みの Service Broker エンドポイントを作成します。

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

    詳細については、「CREATE ENDPOINT (Transact-SQL)」を参照してください。

  3. エンドポイントに対する CONNECT 権限を許可する。

    Service Broker エンドポイントに対する CONNECT 権限を PUBLIC またはログインに許可します。

    次の例では、broker_endpoint という名前の Service Broker エンドポイントに対する接続を PUBLIC に許可します。

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

    詳細については、「GRANT (Transact-SQL)」を参照してください。

  4. msdb に AutoCreatedLocal ルートまたは特定のサービスへのルートが含まれている。

    注意

    msdb を含む各ユーザー データベースには、既定で AutoCreatedLocal というルートが含まれています。 このルートは、どのサービス名および任意のブローカー インスタンスにも適用でき、現在のインスタンス内でメッセージを配信するように指定します。 AutoCreatedLocal の優先度は、リモート インスタンスと通信する特定のサービスを明示的に指定したルートよりも低くなります。

    ルートの作成の詳細については、「Service Broker のルーティングの例」(SQL Server 2008 R2 バージョンのオンライン ブック) および「CREATE ROUTE (Transact-SQL)」を参照してください。

可用性グループのリモート サービスにメッセージを送信するための要件

  1. 対象サービスへのルートを作成する。

    次のようにルートを構成します。

    • ADDRESS を、サービス データベースをホストする可用性グループのリスナーの IP アドレスに設定します。

    • PORT を、各リモート SQL Server インスタンスの Service Broker エンドポイントに指定したポートに設定します。

    次の例では、ISBNLookupRequestService サービスに対する RouteToTargetService という名前のルートを作成します。 ルートの対象は、ポート 4022 を使用している可用性グループ リスナー MyAgListener です。

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

    詳細については、「CREATE ROUTE (Transact-SQL)」を参照してください。

  2. msdb に AutoCreatedLocal ルートまたは特定のサービスへのルートが含まれている (詳細については、このトピックの前の「可用性グループのサービスでリモート メッセージを受信するための要件」を参照してください)。

[トップに戻る] リンクで使用される矢印アイコン[Top]

関連タスク

[トップに戻る] リンクで使用される矢印アイコン[Top]

関連項目

概念

AlwaysOn 可用性グループの概要 (SQL Server)

可用性グループ リスナー、クライアント接続、およびアプリケーションのフェールオーバー (SQL Server)

SQL Server Service Broker