asp.net和存储过程中的事务之间是否有任何区别

时间:2011-08-19 09:56:34

标签: c# asp.net sql-server transactions

如果我有3个sql查询,并且所有三个必须执行或没有。如果我在asp.net代码或存储过程中编写此查询,有什么区别吗?

5 个答案:

答案 0 :(得分:2)

如果您正在为一个数据库实例上的当前连接做一切,基本上您将看到使用T-SQL事务(BEGIN TRAN / COMMIT TRAN)或ADO.NET事务(TransactionScope,BeginTransaction ...)

但请注意,您可以使用事务范围在一个事务中对多个连接(对多个数据库实例的请求)进行分组。

答案 1 :(得分:2)

两者都是有效的管理交易方式。使用存储过程的优点是网络流量更少,执行速度更快,数据库内容封装更好等,而使用asp.net可以让您涉及一些高级逻辑或使用其他编程的一部分,这可能会影响您的查询。

答案 2 :(得分:1)

您可以像在数据库中使用事务一样使用.NET中的TransctionScope

请注意选择正确的isolation level

默认情况下,TransactionScope使用Serializable隔离级别执行。这可能不是你想要的。

数据库默认隔离级别更可能是“已提交读”。

答案 3 :(得分:0)

出于效率原因,您最好使用可以回滚错误的事务编写SP。如果只是为了简单起见,直接使用SQL,以及SP可以编译一次,以便将来更快地执行。

答案 4 :(得分:0)

使用SqlConnection.BeginTransaction()时没有区别。

但是,这个问题可能与What's the difference between an SQL transaction at the stored procedure level and one at the SqlConnection level?

重复