sql-server - 我真的需要使用 "SET XACT_ABORT ON"吗?

标签 sql-server sql-server-2005 error-handling transactions

如果你小心并在所有事情上使用 TRY-CATCH,并且在错误时回滚,你真的需要使用:

SET XACT_ABORT ON

换句话说,是否存在 TRY-CATCH 会错过 SET XACT_ABORT ON 会处理的错误?

最佳答案

请记住,无论有或没有 XACT_ABORT,TRY-CATCH 都无法捕获某些错误。

但是,SET XACT_ABORT ON不影响错误捕获。但它确实保证任何事务都会回滚/注定失败。当“OFF”时,您仍然可以选择提交或回滚(取决于xact_state)。这是 SQL 2005 对于 XACT_ABORT

的主要行为变化

如果客户端命令超时并且客户端发送“中止”指令,它还可以删除锁定等。如果没有 SET XACT_ABORT,如果连接保持打开状态,锁可能会保留。我和我的同事(MVP)在今年年初对此进行了彻底的测试。

关于sql-server - 我真的需要使用 "SET XACT_ABORT ON"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/917773/

相关文章:

c# - 如何从 SQL Server 2005 获取 "dd/mm/yyyy h:m:s"格式的日期时间记录?

sql-server - 使用 LIKE 和 EXISTS 子句时优化数据库架构/索引以获得更快的查询结果

SQL Server,在 SQL 中创建临时表时出现问题

r - 如何绕过R中的for循环中的错误?

sql - 从动态 sql 中选择非空列作为逗号分隔的字符串

sql-server - 在哪里可以找到 Azure 数据库同步

sql-server - 句柄 "Divide by zero error encountered error"

sql-server - 在删除配置单元内部表时保留数据

php - 从登录页面重定向登录用户

powershell - 如何处理Powershell高级功能ErrorAction参数?