2012-05-03 8 views
1

分散トランザクションの一部としてService Brokerキューにメッセージを送信する状況があります。明らかに、トランザクションが完了した場合にのみ、メッセージを送信します。Sql Server Service BrokerとMSDTCとの通信方法

しかし、この状況では、トランザクションのコミット前にキューの受信側でメッセージが受信され、何らかの形で登録されるようになっています。これは、送信者がロールバックした場合に問題を引き起こし、最終的に毒メッセージによってキューが無効になる原因となります。

これが期待どおりの動作ですか?もしそうなら、私たちはトランザクションでメッセージをどのように送信できますか?

+0

私は、送信のロールバックが有害なメッセージの検出を引き起こすことに驚いています。オフにテスト! –

+0

それは問題です!受信者は同じ分散トランザクションで終了するように見えるので、送信と受信は同じもので終了します!物事をより複雑にするWCFトランザクションやDCOMとのやりとりはたくさんあります – Ben

答えて

0

NOLOCKヒントでキューを読み込んでいますか?その場合、キューにメッセージが表示されますが、実際には受信できません。トランザクションがコミットした後でのみ、それを受け取ることができます。

関連する問題