私はリモートのMSMQにメッセージを投稿するためにMsmqIntegrationBinding
を使用したCLRベースのストアドプロシージャを持っています。 SQL Server 2005ではすべてがうまくいきましたが、2005年から2012年にアップグレードが行われると思われます。私はSQL Server 2012でCLR(SP)を登録しようとしましたが、System.ServiceModell.DLL
を登録する際に、次のエラーが発生しました。SQL Server 2012のCLR関数(WCFベース)を登録
メッセージ6544、レベル16、状態1、行1
は、アセンブリのためのアセンブリを作成 'System.ServiceModel' アセンブリ 'microsoft.visualbasic.activities.compilerは' 純粋.NETアセンブリ不正な形式のかそうでないために失敗しました。 確認不能なPEヘッダー/ネイティブのスタブ。
私は解決策を探しましたが、他の人が同じ問題を抱えていることはほとんどなく、解決策がないようです。
MSMQIntegrationBinding
を使用する主な理由は、各メッセージが1回だけ配信されるようにすることです。あなたが見る通り、通常のsystem.messagingクラスにはないExactlyOnce
プロパティにかなり関心がありました。私たちは何千ものメッセージを処理し、メッセージの順序付けは非常に重要です。各メッセージにはidが打たれています。以前に送信されたメッセージよりも小さいIDを持つメッセージが送信された場合、クライアントシステムは停止します(大きな問題)。
また、system.messagingを使用してCLRストアドプロシージャを書き直しました。上記のシナリオをサポートできるかどうかの提案が必要です。
代わりに、コールをキューにプロキシするWCFサービスを呼び出します。 – abatishchev
SQL Serverとアセンブリのビット数はどのくらいですか? – abatishchev