1

MSDN のチュートリアルに従って、Service Broker を介して 1 つの SQL エンジン内の 2 つの SQL インスタンス間で会話をしようとしています。簡単にするために、Encryption = OFF でダイアログを送信するので、Master key や Certificate... を処理する必要がなく、ローカル ワークステーションで機能します。

DECLARE @InitDlgHandle UNIQUEIDENTIFIER;

DECLARE @RequestMsg NVARCHAR(100);

取引を開始します。

BEGIN DIALOG @InitDlgHandle サービス [//InstDB/2InstSample/InitiatorService] からサービス N'//TgtDB/2InstSample/TargetService' への契約 [//BothDB/2InstSample/SimpleContract] WITH ENCRYPTION = OFF;

SELECT @RequestMsg = N'Message for Target service.';

会話時に送信 @InitDlgHandle メッセージ タイプ [//BothDB/2InstSample/RequestMessage] (@RequestMsg);

@RequestMsg を SentRequestMsg として選択します。

コミットトランザクション; 行く

ただし、サーバーに移動した後、同じスクリプトを使用すると、initDB がメッセージを送信した後、ターゲット DB は SQL トレースで「プライベート キーが見つかりません。メッセージを配信できません」と表示し続けます。

私の質問は、暗号化 = OFF を設定したため、ターゲット DB に証明書が見つからないのはなぜですか?

SQL 2005 SP2、Windows 2003 を使用

任意の入力に感謝します。

4

1 に答える 1

1

パーティーに遅刻することについて話しています...
この投稿は前に見たことがありません。まだ関連性があるかどうかはわかりませんが、おそらく原因は次のとおりです。

REMOTE SERVICE BINDINGの存在は、ENCRYPTION = OFF よりも優先されます。これは、開発者の職務と管理者の職務を分離できるようにするためです。アプリケーションで暗号化が必要な場合、開発者は ENCRYPTION = ON を指定し、管理者はREMOTE SERVICE BINDING を提供する必要があります。アプリケーションが暗号化を必要としない場合、開発者は ENCRYPTION = OFF を指定し、展開サイトが暗号化が必要であると判断した場合、アプリケーションが暗号化を必要としない場合でも、管理者は REMOTE SERVICE BINDING を提供できます

ダイアログのセキュリティと認証がどのように機能するかについての完全な説明は、私のサイトにあります。

于 2009-07-14T19:32:01.197 に答える