Windows Server 2003 または Windows XP Service Pack 2 のインストール後、リンク サーバーに対して分散トランザクションを実行すると SQL Server 2000 でエラー メッセージ 7391 が表示される にネットワーク DTC アクセスを有効にする方法が記述されている。XP SP2 の場合ファイアウォールの設定が必要なところがポイント。
ローカルにあるSQL Server(SQL Express) で開発をしていると、ネットワーク DTC アクセスは不要なので、発見が遅れてあとからはまることになるので注意。
Windows Server 2003 の場合は、Windows コンポーネントの追加と削除でネットワーク DTC アクセスを有効にできる。
ちなみに出て来たエラーメッセージとしては以下の2種類が確認できた。後者はファイアウォール設定により通信に失敗したときのメッセージ。
System.Transactions.TransactionManagerCommunicationException: 分散トランザクション マネージャ (MSDTC) のネットワーク アクセスは無効になっています。 コンポーネント サービス管理ツールを使用して、MSDTC のセキュリティ構成でネットワーク アクセスの DTC を有効にしてください。 ---> System.Runtime.InteropServices.COMException: トランザクション マネージャにより、リモート トランザクションまたはネットワーク トランザクションのサポートが無効にされました。 (HRESULT からの例外: 0x8004D024)。 System.Transactions.TransactionManagerCommunicationException: 基本トランザクション マネージャとの通信が失敗しました。 ---> System.Runtime.InteropServices.COMException: エラー HRESULT E_FAIL が COM コンポーネントの呼び出しから返されました。。
認証は、ドメインに参加したマシン同士であれば、自動的になんとかしてくれる。 そうでない場合はNetwork Serviceのパスワードを合わせるとか? MSDTC の認証関係のドキュメントは読み込んでいない。
Windowsファイアウォールは、ポート制限解除だけではなく、プログラムに対する制限解除ができるというのがよい。
こんばんわー。偶然にも同じような記事をいま書こうとしている。。w
PASSJから見に来ました。参考にさせていただきます。