问题描述
SET XACT_ABORT ON
指示 sql Server 回滚整个事务并在发生运行时错误时中止批处理。它涵盖了客户端应用程序而不是 sql
Server 本身发生命令超时等情况(默认XACT_ABORT OFF
设置未涵盖)。
由于查询超时将使事务保持打开状态,SET XACT_ABORT
ON
因此建议在所有具有显式事务的存储过程中使用(除非您有特定的理由不这样做),因为应用程序在与打开事务的连接上执行工作的后果是灾难性的。
Dan Guzman 的博客上有一个非常棒的概述,
解决方法
SET XACT_ABORT ON
在存储过程中使用有什么好处?