在SQL SERVER 2008的StoredProcedures中放置显式事务有什么缺点吗

本文关键字:事务 什么 缺点 SERVER SQL 2008 StoredProcedures | 更新日期: 2023-09-27 18:00:02

我必须在代码中实现Transactions。我有以下选项:-

  1. C#代码中的TransactionScope:-如果事务中有一些逻辑代码以及数据库调用,我将使用这种情况。如果存在命令超时,则事务回滚并释放锁
  2. 在SP中具有显式事务:-在命令超时的情况下,事务保持打开状态,并且不会释放锁

你们中有人遇到过类似的问题吗。请提出建议。另请告诉我,在第二种情况下,设置XACT_ABORT_ON将有所帮助。

在SQL SERVER 2008的StoredProcedures中放置显式事务有什么缺点吗

如果您的存储过程不是"接口过程"(由代码外的第三方调用),我建议使用TransactionScope或在代码中创建SqlTransaction来进行过程调用。用代码处理事务要容易得多。您可以阅读这篇文章:http://www.code-magazine.com/Article.aspx?quickid=0305111-正如您所看到的,如果您开始在存储过程中使用事务,事情可能会变得不必要的复杂。

  • 我总是使用SET XACT_ABORT ON
  • 服务器端事务不需要MSDTC并且开销较小
  • TRY/CATCH使存储的进程更加可靠

关于安全存储过程模板,请参阅此处的答案,该模板也将处理嵌套事务:包含TRY CATCH ROLLBACK模式的嵌套存储过程?