1

かなり長い間、サービスブローカーを実行してきました(同じサーバーで実行しています)。次に、2台のサーバー間にデータベースミラーリングを追加します。

これを機能させるには、サービスブローカー用の新しいルートと新しいエンドポイントを作成する必要がありました(フェイルオーバーの場合のミラーリングをサポートするため)。

これは、まったく同じバージョンのWindowsとsql-serverを実行している開発環境で試しました。これは:

Microsoft SQL Server 2008 R2(RTM)-10.50.1734.0(X64)2010年8月11日12:51:02 Copyright(c)Windows NT 6.1(Build7600:)上のMicrosoftCorporationEnterprise Edition(64ビット)

1つの違いは、開発環境が仮想システムで実行されていることです。

これを本番環境に実装すると、開発環境では見られなかった問題が発生しました。

サービスブローカーの更新は非常に遅くなりましたが、一部のメッセージが届いたことがわかりました。

表示されるエラーメッセージは次のとおりです。

ミラールートは機能していません。「TCP://server1.domain.local:4022」は「不明」 []として機能しています。「TCP://server2.domain.local:4022」は「不明」 []として機能しています。

ミラールートは機能していますが、プリンシパルにのみ接続されています。'TCP://server1.domain.local:4022'は'プリンシパル'[]として機能しています。「TCP://server2.domain.local:4022」は「不明」[]として機能しています。

開発サーバーでも、同様のメッセージが表示されました。

ミラールートは機能しています。「TCP://server1.devdomain.local:4022」は「ミラー」として機能しています[]。「TCP://server2.devdomain.local:4022」は「プリンシパル」として機能しています[]。

ミラールートは機能していますが、プリンシパルにのみ接続されています。「TCP://server1.devdomain.local:4022」は「不明」[]として機能しています。「TCP://server2.devdomain.local:4022」は「プリンシパル」として機能しています[]。

ご覧のとおり、ミラールートは本番サーバーでは機能していませんが、開発サーバーでは機能していないというメッセージが表示されます。

データベースミラーリングは、ポート5022、および4022のサービスブローカーを介してセットアップされます。

ルート/エンドポイントがどのように作成されたかの例:

--created on booth principal and mirror
CREATE ENDPOINT [Mirroring] 
    AUTHORIZATION [domain\sqlservice]
    STATE=STARTED
    AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
    FOR DATA_MIRRORING (ROLE = PARTNER, AUTHENTICATION = WINDOWS NEGOTIATE, ENCRYPTION = DISABLED)

--created on booth principal and mirror
CREATE ENDPOINT [BrokerEndpoint] 
    AUTHORIZATION [domain\sqlservice]
    STATE=STARTED
    AS TCP (LISTENER_PORT = 4022, LISTENER_IP = ALL)
    FOR SERVICE_BROKER (MESSAGE_FORWARDING = DISABLED, MESSAGE_FORWARD_SIZE = 10, AUTHENTICATION = WINDOWS NEGOTIATE, ENCRYPTION = DISABLED)

--created in DB1 (on principal)
CREATE ROUTE [RouteToDB2]  AUTHORIZATION [dbo]  WITH SERVICE_NAME = N'ExecSPReceiveService' , BROKER_INSTANCE = N'DF46452B-97F3-4924-AD2A-A130FDC2016F' , ADDRESS = N'TCP://server1.domain.local:4022' , MIRROR_ADDRESS = N'TCP://server2.domain.local:4022' 

--created in DB2 (on principal)
CREATE ROUTE [RouteToDB1]  AUTHORIZATION [dbo]  WITH SERVICE_NAME = N'ExecSPSendService' , BROKER_INSTANCE = N'91CBA730-48A2-47A8-95C8-0558706250AB' , ADDRESS = N'TCP://server1.domain.local:4022' , MIRROR_ADDRESS = N'TCP://server2.domain.local:4022' 

データベースミラーリングエンドポイントを削除すると、すべてが再び正常に機能し始めます。

何か案は?

ありがとう!

4

2 に答える 2

1

問題は、サービスブローカー用に「ファイアアンドフォーゲット」パターンを設定したことが原因でした。

http://rusanu.com/2006/04/06/fire-and-forget-good-for-the-military-but-not-for-service-broker-conversations/

rusanuが推進するより良いソリューションを実装し、その後すべてが機能しています。

ここに示されている「高速データプッシュ」の例も使用しましたhttp://msftsbprodsamples.codeplex.com/

于 2012-08-21T07:12:33.860 に答える
0

私の知る限り、これらのメッセージはエラーではなく、プリンシパルがミラーサーバーとの接続を確立したときにログに記録される予想される情報メッセージです。使用されていないミラーリング接続は、非アクティブ状態が90秒間続くとドロップされ、オンデマンドで再接続されるため、ミラーリングデータの移動パターンによっては、これらのルーティングメッセージが多かれ少なかれ頻繁に表示される場合があります。

Service Brokerの更新が非常に遅くなったと言うとき、ベースラインと比較してどれだけ遅くなったかを示す数値を提供できますか?

于 2011-03-23T17:12:28.687 に答える