SqlClient.SqlTransaction vs System.Transactions



我们在设置MSDTC时一直存在一些问题,现在正在考虑用SqlTransactions替换SystemTransactions

我感兴趣的是上述差异,以及我们在这样做时可能遇到的问题。

Massimiliano引用的这篇文章引用时只有7岁,因此只引用.NET 2.0和SQL Server 2000和2005。然而,我相信这些要点对以后的版本仍然有效。我很难在以后的版本中找到任何更改的直接适用评论。

在SQL Server 2008及更高版本中,与旧版本相比,针对单个数据库的System.TransactionScope事务似乎不太可能升级为DTC。

相关:SqlClient、System.Transactions、SQL Server 2008和MARS

因此,根据您的SQL Server版本,使用针对单个数据库的System.Transactions时或多或少会遇到DTC问题。

System.Transactions的代码比SqlTransactions的轻,但处理开销更高,并且您的控制不那么明确。

System.Transactions不是SqlTransaction的替代品。

但就单个数据库而言,基于ADO.NET 2.0 System.Transactions的事务和常规SqlTransaction之间的最大区别是"隔离级别"。然而,这是一个很大的区别。让我稍后讨论隔离级别,但在此之前,您必须意识到,在Sql 2k中,即使只涉及一个数据库,事务也将由MSDTC管理。对于Sql2k5,事务由LTM管理,直到连接到不同数据库的第二个SqlConnection出现为止。当这种情况发生时,事务会从LTM提升到MSDTC

http://dotnetslackers.com/SQL/re-3463_SqlTransaction_vs_System_Transactions.aspx

相关内容

  • 没有找到相关文章

最新更新