2010-12-07 5 views
1

トランザクションスコープ内の2つの異なるデータベースからデータにアクセスしようとしています。 しかし、2番目のデータベースで任意のクエリを実行しているうちに、「この操作はトランザクションの状態に対して有効ではありません」と表示されます。エラー単一のトランザクションスコープ内の異なるデータベースへの接続を処理する方法

using(TransactionScope scope=new TransactionScope()) 
{ 
    Insert();//Inserts to database A 
    Select();//Selects from database B - error while executing this statement 
} 

両方のデータベースが同じサーバーに存在します。

答えて

1

SQL Server 2005では、すべてのマシンでDTC(分散トランザクションコーディネータ)を有効にする必要があると思います。 2つの異なる接続により、トランザクションはローカルから分散へプロモートされます。

明らかに、これはSQL Server 2008で修正されています:TransactionScope automatically escalating to MSDTC on some machines?使用しているSQL Serverのバージョンはどれですか?

は、問題の根本になりますA ConnectionScope class

Common Gotchas when using TransactionScope and MS DTC

+0

のSQLServer 2005 .. – Novice

+0

を参照してください... –