我有一个存储过程,在插入/更新/删除时的触发器内调用。
问题是这个 SP 中有一个不重要的代码块。
因此我想忽略此代码块引起的任何错误。
我将此代码块插入到 TRY CATCH 块中。但令我惊讶的是我收到了以下错误:
当前事务无法提交,并且无法支持写入日志文件的操作。回滚事务。
我也经历过同样的折磨,我刚刚解决了!
只需在触发器的第一步添加这一行就可以了:
SET XACT_ABORT OFF;
就我而言,我正在处理将导致错误的批处理和来自 SQL 的错误变量提供给特定表的错误。
默认值XACT_ABORT is ON,因此即使您在 TRY CATCH 块内处理错误(就像我正在做的那样),整个事务也不会被提交。将其值设置为OFF即使发生错误也会导致事务被提交。
不过,当错误没有处理时我没有测试......
欲了解更多信息:
- 设置 XACT_ABORT (Transact-SQL) |微软文档 https://learn.microsoft.com/en-us/sql/t-sql/statements/set-xact-abort-transact-sql
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)