2006年04月25日

TransactionScopeでの分散トランザクションへの昇格

  
.NET Framework2.0 の ADO.NETでは、TransactionScope を使った場合、
自動的に、分散トランザクションに昇格するようだ。
ただ、単一のデータベースであるにも関わらず、

----
分散トランザクション マネージャ (MSDTC) のネットワーク アクセスは
無効になっています。 コンポーネント サービス管理ツールを使用して、
MSDTC のセキュリティ構成でネットワーク アクセスの DTC を有効にして
ください。
----

という例外が発生してしまう。
DBはそれほど詳しくないので、何か大きな見落としが
あるのかな。それとも大きな勘違いをしているのか。。。


この記事へのコメント
はじめまして。
もうとっくに解決されているかもしれませんが...。
私も、少し前に同じ問題で悩み、エラーメッセージで検索したところ
このエントリがヒットしたので、情報共有の為にコメントを書かせて下さい。

[TransactionManagerCommunicationException using TransactionScope]
http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework.adonet/topic37446.aspx

[Windows Server 2003 または Windows XP Service Pack 2 のインストール後、リンク サーバーに対して分散トランザクションを実行すると SQL Server 2000 でエラー メッセージ 7391 が表示される]
http://support.microsoft.com/kb/839279

私は、上の方リンクで Luke Zhang さんが書かれている手順を
開発機へ施しましたところ、上記エラーがでなくなりました。
Posted by なおこ(・∀・) at 2006年07月02日 21:52
コメントありがとうございます。
僕の場合、MSDTCを有効にして、http://support.microsoft.com/kb/839279 に書いてあるように、XPのファイアウォール設定を変更することで、メッセージが出るのを回避しました。

ADO.NET2.0のTransactionScope と TableAdapterの知識が足りなかったために、上記のエラーで悩みましたが、最終的には、トランザクションスコープの中で、コネクションを一つだけ張るようにしました。
TableAdapter 内の Connection にどうやってアクセスするのか分かるまで結構時間がかかりました.

Posted by Gushwell at 2006年07月03日 21:43
 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/50438259