This question already has an answer here:
Why isn't SET XACT_ABORT ON the default behavior?
(1个答案)
3年前关闭。
我了解SET XACT_ABORT命令的目的:
通常,如果错误将要继续处理事务的情况要比错误要回滚整个事务的情况要多,因为我经常听到DBA和博客建议保留
问题:
如果大多数用例要求
但这仅限于通过SSMS运行的SQL语句,对通过应用程序代码/SSIS包调用的存储过程没有帮助。对于那些过程,我仍然必须在每个过程中重复
有关详细信息,请参见here。
也可以通过SSMS对象资源管理器>服务器属性>连接来设置该选项:
(1个答案)
3年前关闭。
我了解SET XACT_ABORT命令的目的:
通常,如果错误将要继续处理事务的情况要比错误要回滚整个事务的情况要多,因为我经常听到DBA和博客建议保留
SET XACT_ABORT ON
以避免出现不一致的情况交易结果。我已经看到我们所有的存储过程还具有SET XACT_ABORT ON
,作为模板代码的一部分。问题:
XACT_ABORT
为ON
,是什么导致SQL Server将其默认为OFF
?将XACT_ABORT
缺省设置为ON
会给SQL Server事务处理增加任何开销吗? SET XACT_ABORT
命令仅影响当前 session 。我知道我可以将SSMS从SET XACT_ABORT ON
缺省设置为SSMS > Tools > Options > Query Execution > SQL Server > Advanced
,如下图所示:但这仅限于通过SSMS运行的SQL语句,对通过应用程序代码/SSIS包调用的存储过程没有帮助。对于那些过程,我仍然必须在每个过程中重复
SET XACT_ABORT ON
。有什么方法可以在数据库级别将XACT_ABORT
设置为ON
?还有其他可以全局设置XACT_ABORT
的方式,而不必每次都担心吗? 最佳答案
您可以在服务器级别将XACT_ABORT ON
设置为全局默认连接设置,尽管该命令有点晦涩:
EXEC sys.sp_configure N'user options', N'16384'
GO
RECONFIGURE WITH OVERRIDE
GO
有关详细信息,请参见here。
也可以通过SSMS对象资源管理器>服务器属性>连接来设置该选项:
关于sql-server - 为什么SQL Server默认将XACT_ABORT设置为OFF?可以将其全局设置为“开”吗? [复制],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43192298/
10-16 03:22