假设MSSQL Server上的存储过程使用BEGIN TRANSACTION/COMMIT TRANSACTION
的SQL事务,这与开始和通过SqlConnection.BeginTransaction()
使用ADO.NET提交一个有什么不同?
答案 0 :(得分:3)
对于ADO.NET,它没有区别。它在MSDN中隐式声明,对于SqlTransaction对象,如果事务已经在服务器上回滚,则称Commit方法“失败。”
此外,只要在连接上执行.BeginTransaction,SQL Server Profiler就会显示“SET TRANSACTION ISOLATION LEVEL READ COMMITTED; BEGIN TRAN”。
然而,对于ADO(不是.NET),它不是。这曾经允许有效的嵌套事务(服务器trans嵌套在客户端内)的好方案。尽管我已经使用了很多,但在这种情况下,我无法确切地定义“客户交易”是什么。
答案 1 :(得分:2)
如果要连续调用多个存储过程并且希望能够回滚,则必须使用SqlConnection.BeginTransaction()从代码管理事务。否则它是一样的。