SQL Server 2000にデータを挿入するSQL Server Service Broker
-
10-07-2019 - |
質問
2つのサーバーがあります。最初のサーバーはSQL Server 2005で、2番目のサーバーはSQL Server 2000です。2005年から2000年にデータを挿入し、非同期にしたいです(" saveトランザクション」が使用されます)。
2000サーバーのテーブルに情報が挿入されると、この情報を処理するために、代わりのトリガーが起動されます。
そのシナリオでは、Service Brokerを使用することにしました。そのため、あるサーバーから別のサーバーに情報を挿入するストアドプロシージャがあり、完全に機能します。
しかし、ターゲットキュープロセスメッセージプロシージャからこのプロシージャを呼び出すと失敗し、その理由がわかりません!!
また、同じ構造(キューとストアドプロシージャ)を使用して、同じSQL 2005サーバー上の1つのデータベースから別のデータベースに別のデータベースにコピーするため、動作することもわかっています。
マシン間でのみ障害が発生しますが、障害の原因に関する詳細情報を取得する理由または方法は誰でも知っていますか?または、非同期データを挿入する方法(1分より頻繁に情報を挿入する必要があるため、SQLエージェントを使用できません)。
解決
通常の問題は、SSBプロシージャがWAITFORを使用し、WAITFORが分散トランザクションと互換性がないことです。唯一の解決策は、WAITFOR(RECEIVE)を取り除き、代わりに通常のRECEIVEを使用することです。
他のヒント
Service Brokerの代わりにリンクサーバーを使用することを検討してください。リンクサーバーを使用すると、次のことができます。
insert into LinkedServer.The2000Db.dbo.The2000Table
(col1, col2, col3)
select col1, col2, col3
from The2005Table
所属していません StackOverflow