异常:“分布式事务已完成。请在新事务或NULL事务中登记此会话”
这是在托管SQL 2005和Sql 2008的机器上运行的SProc内部进行的。
C#代码看起来像这样
(using TransactionScope t = new TransactionScope ())
{
using(SqlConnection c= new SqlConnection(...))
{
c.Open();
DataContext1 ctx = new DataContext1(c);//Linq2SQL
c.StoreData(2,3);//Call Sproc
}
}
Sproc看起来像这样
Select * Table where x=2 and y=3
if(@@rowcount =0)
Insert into table values(2,3)
end if
答案 0 :(得分:3)
该错误是由于DB前端的约束失败引起的。您的事务正在回滚(意味着数据库没有发生任何事情)。
基本上,这是在交易中发生的错误,如果没有更多信息我们就无法轻易识别。发布您的查询。