我们在设置 MSDTC 时遇到了一些问题,现在考虑将SystemTransactions
替换为SqlTransactions
。
我对上述的不同以及我们可能会遇到的问题感兴趣。
答案 0 :(得分:1)
Massimiliano引用和引用的文章在引用时已有7年历史,因此仅涉及.NET 2.0和SQL Server 2000和2005.但是,我认为重点仍然适用于更高版本。我无法在以后的版本中找到任何更改的直接适用评论。
似乎在SQL Server 2008及更高版本中,针对单个数据库的System.TransactionScope事务不太可能被提升为DTC而不是旧版本。
相关:SqlClient, System.Transactions, SQL Server 2008, and MARS
因此,根据您的SQL Server版本,使用针对单个数据库的System.Transactions,DTC会有或多或少的麻烦。
System.Transactions的代码比SqlTransactions的代码轻,但处理开销较高,而且控制较少。
答案 1 :(得分:0)
System.Transactions
不是替代SqlTransaction
。
但就单个数据库而言,基于ADO.NET 2.0 System.Transactions的事务与常规SqlTransaction之间的最大区别是“隔离级别”。然而,这是一个很大的不同。让我稍后来到隔离级别,但在此之前你必须意识到,在Sql 2k中,即使你有一个单独的数据库,交易也将由MSDTC管理。对于Sql2k5,事务由LTM UNTIL管理,连接到不同数据库的第二个SqlConnection进入图像。当这种情况发生时,交易从LTM升级到MSDTC。
http://dotnetslackers.com/SQL/re-3463_SqlTransaction_vs_System_Transactions.aspx