如果你小心并在所有事情上使用 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/