アプリケーションに .NET 2.0/3.5 フレームワークを使用しています。複数の接続でいくつかの SQL コマンドを実行する必要があり、各接続は異なるサーバー (Oracle、SQL Server) 上にあります。これらのコマンドがトランザクション対応であることを確認する必要があります。
例: Oracle データベースと SQL Server データベースの両方のテーブルで INSERT を実行し、例外がスローされなかった場合はそれらをコミットする必要があります。例外があった場合、必要に応じて両方のサーバーでロールバックしたいと考えています。
System.Transactions と TransactionScope を使用する必要があると思います。これには、データベース サーバーとアプリケーション サーバーに Microsoft Distributed Transaction Coordinator (MSDTC) をセットアップする必要があります。
高低を調べましたが、相互認証を使用して MSDTC を段階的にセットアップする方法 (ファイアウォール設定と MSDTC 設定の構成を含む) を説明している記事を見つけることができませんでした。完全に文書化されています (セットアップ方法に関する非常に優れた MSDN 記事を見つけられない限り)。
MSDTC を使用することが私の仕事を成し遂げるための唯一の方法ですか?
もしそうなら、どうすれば正しく設定できますか?
編集:
- すべてのマシンで Windows Server 2003 を使用しています。
- 2 つの SQL Server があります。1 つは SQL Server 2000 で、もう 1 つは 2005 です。
- Oracle サーバーが 1 つあり、バージョン 11g です。
- 私たちが開発しているアプリケーションは、トランザクション方式で 3 つのデータベースすべてのレコードを変更/作成する必要がある場合があります。
- キーボードと椅子の間の問題ではありません。MSDTC に関するすべての設定方法に関する MSDN の記事を読みましたが、DTCPing やその他のテスト アプリケーションを動作させることができません。プロセスの詳細を段階的に説明する記事を探していました。特定のことを行うための手順を「省略」している MSDN ドキュメントに何度か遭遇しました。