在存储过程中使用“ SET XACT_ABORT ON”有什么好处?


Answers:


230

SET XACT_ABORT ON指示SQL Server在发生运行时错误时回滚整个事务并中止批处理。它可以在客户端应用程序而不是SQL Server本身(默认XACT_ABORT OFF设置未涵盖)中发生命令超时的情况下为您提供服务。

由于查询超时将使事务保持打开状态,SET XACT_ABORT ON因此建议在所有具有显式事务的存储过程中使用(除非您有特定的原因,否则),因为应用程序在与打开的事务的连接上执行工作的后果是灾难性的。

Dan Guzman的Blog上有非常好的概述,


41
那么为什么默认情况下它不打开?
迈克W

1
如果你有被XACT_ABORT仍然需要BEGIN TRY- BEGIN CATCHROLLBACKBEGIN CATCH在SQL块?
user20358 '19

1
@ user20358 BEGIN TRY- BEGIN CATCH不会赶上之类的东西出现超时的客户端应用程序,以及一些SQL错误是抓不到,也让你有一个开放的交易,你不会指望一个。
汤姆·林特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.