根据Books Online documentation of
输出结果为:
我之前也曾认为
SET XACT_ABORT ON
,我得出的印象是,如果T-SQL语句引发运行时错误,则整个事务将被终止并回滚:
备注
当 SET XACT_ABORT 为 ON 时,如果 Transact-SQL 语句引发运行时错误,则整个事务将被终止并回滚。
在 SQL Server 2008 R2 中进行测试:
SET XACT_ABORT ON;
BEGIN TRANSACTION;
PRINT 'TranCount befor an error = '+CAST(@@Trancount AS varchar(50))
DROP TABLE QuertyAsdf
PRINT 'TranCount after an error = '+CAST(@@Trancount AS varchar(50))
输出结果为:
TranCount befor an error = 1
Msg 3701, Level 11, State 5, Line 6
Cannot drop the table 'QwertyAsdf', because it does not exist or you do not have permission.
TranCount after an error = 1
我之前也曾认为
SET XACT_ABORT ON
会在出现错误时终止批处理:
SET XACT_ABORT ON
指示SQL Server在运行期间出现错误时回滚整个事务并中止批处理。
听起来很方便。我该如何让它也执行这个操作呢?