我在兩個不同的網絡Db1和Db2(遠程數據庫)上有一個Web服務器和兩個DB服務器。」事務已在事務範圍內隱式或明確提交或中止
- DB1:SQL Server 2008 R2中,操作系統:Windows Server 2003的SP2
- DB2:SQL Server 2000中,操作系統:Windows Server 2003 R2的
- Web服務器:在Windows Server 2003 R2
我想在這些數據庫中插入兩條不同的記錄,我正在使用TransactionScope
。
using (TransactionScope tscope = new TransactionScope(TransactionScopeOption.RequiresNew))
{
//open connection db 1
//insert into db1
//open connection db2 -- the problem is here
//insert into db2
tscope.Complete();
}
當我跟蹤的源代碼,在第一DATABSE將成功完成,但在第二連接要打開我遇到下面的錯誤。
錯誤:
The transaction has already been implicitly or explicitly committed or aborted.
我已經配置MSDTC,Distributrd事務協調器和每一件事情是確定的。我可以在我的數據庫服務器中有分佈式事務,並且我沒有問題。 TransactionScope
有什麼不對?請幫幫我。
第一連接是LINQ到SQL:
DataClassesDataContext Dac = new DataClassesDataContext();
Dac.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionCs"].ConnectionString;
tbl_KargahDistribution Workshop = new tbl_KargahDistribution();
Workshop.WpCode = Bodu.WpRealCode;
Workshop.State = Bodu.BduState;
Workshop.City = Bodu.BduCity;
Workshop.Town = Bodu.BduTown;
Workshop.SubSystem = Bodu.BduSubSystem;
Dac.tbl_KargahDistributions.InsertOnSubmit(Workshop);
Dac.SubmitChanges();
第二連接是:
Queries Qu = new Queries();
SqlCon = new SqlConnection(BoBaz.BazConnectionString);
SqlCon.Open();
string sq = Qu.InsertWorkshopBaseInfo();
SqlCom = new SqlCommand(sq, SqlCon);
您能否包含有關您的連接如何打開的詳細信息? – Kane
你玩過'SqlConnection.BeginTransaction()','Transaction.Current.EnlistVolatile()'等等嗎? – abatishchev
我剛用enlist = false;在第二個連接字符串中,我沒有得到任何錯誤消息,解決了問題。但我認爲當我設置enlist = false;我的第二個連接不會成爲事務的一部分,所以我沒有使用它。 –