Sql server 这些代码段是否等效(';在';上设置xact_abort;与';try catch rollback';)?

Sql server 这些代码段是否等效(';在';上设置xact_abort;与';try catch rollback';)?,sql-server,xact-abort,Sql Server,Xact Abort,我曾在SQL Server中的存储过程中使用此代码段: create procedure proc_name --declare variables as set nocount on begin transaction begin try --do something commit transaction end try begin catch rollback transaction ;t

我曾在SQL Server中的存储过程中使用此代码段:

create procedure proc_name
    --declare variables
as
    set nocount on
    begin transaction
    begin try
        --do something
        commit transaction
    end try begin catch
        rollback transaction
        ;throw
    end catch
go
但今天我知道了“SETXACT_abort on”的说法。 下面的代码与前面的代码等效吗?他们之间有什么不同吗

create procedure proc_name
    --declare variables
as
    set nocount on
    set xact_abort on
    begin transaction
    --do something
    commit transaction
go
引用

TRY…CATCH构造捕获所有严重性高于10且未关闭数据库连接的执行错误

因此,try-catch不能捕获所有可能的错误。除了尝试捕获外,还可以在上使用xact_abort


try/catch为您提供了更大的灵活性,也就是说,当某件事情不愉快时,您不仅限于回滚。

“try-catch不会捕获所有可能的错误”。当遇到任何错误,包括严重性级别的警告时,xact_abort将回滚tran