事务的回滚设置(SET XACT_ABORT)
2007-03-19 16:57
302 查看
语法
SET XACT_ABORT { ON | OFF }
注释
当 SET XACT_ABORT 为 ON 时,如果 Transact-SQL 语句产生运行时错误,整个事务将终止并回滚。为 OFF 时,只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。编译错误(如语法错误)不受 SET XACT_ABORT 的影响。
对于大多数 OLE DB 提供程序(包括 SQL Server),隐性或显式事务中的数据修改语句必须将 XACT_ABORT 设置为 ON。唯一不需要该选项的情况是提供程序支持嵌套事务时。
下例导致在含有其它 Transact-SQL 语句的事务中发生违反外键错误。在第一个语句集中产生错误,但其它语句均成功执行且事务成功提交。在第二个语句集中,SET XACT_ABORT 设置为 ON。这导致语句错误使批处理终止,并使事务回滚。
SET XACT_ABORT { ON | OFF }
注释
当 SET XACT_ABORT 为 ON 时,如果 Transact-SQL 语句产生运行时错误,整个事务将终止并回滚。为 OFF 时,只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。编译错误(如语法错误)不受 SET XACT_ABORT 的影响。
对于大多数 OLE DB 提供程序(包括 SQL Server),隐性或显式事务中的数据修改语句必须将 XACT_ABORT 设置为 ON。唯一不需要该选项的情况是提供程序支持嵌套事务时。
下例导致在含有其它 Transact-SQL 语句的事务中发生违反外键错误。在第一个语句集中产生错误,但其它语句均成功执行且事务成功提交。在第二个语句集中,SET XACT_ABORT 设置为 ON。这导致语句错误使批处理终止,并使事务回滚。
CREATE TABLE t1 (a int PRIMARY KEY) CREATE TABLE t2 (a int REFERENCES t1(a)) GO INSERT INTO t1 VALUES (1) INSERT INTO t1 VALUES (3) INSERT INTO t1 VALUES (4) INSERT INTO t1 VALUES (6) GO SET XACT_ABORT OFF GO BEGIN TRAN INSERT INTO t2 VALUES (1) INSERT INTO t2 VALUES (3) COMMIT TRAN GO SET XACT_ABORT ON GO BEGIN TRAN INSERT INTO t2 VALUES (4) INSERT INTO t2 VALUES (6) COMMIT TRAN GO SELECT * FROM t2 GO DROP TABLE t2 DROP TABLE t1 GO
相关文章推荐
- SQL事务设置SET XACT_ABORT后正确回滚
- SET XACT_ABORT { ON | OFF } 设置整个事务终止并回滚方法
- SET XACT_ABORT ON [SQL SERVER] 设置事务全部回滚
- SET XACT_ABORT { ON | OFF }SQL Server 是否自动回滚到当前事务
- SQL_SET XACT_ABORT ON(事务回滚)
- SET XACT_ABORT { ON | OFF }SQL Server 是否自动回滚到当前事务
- set xact_abort ON 你懂的, 在分布式数据库事务中,用到. 在事务中,若出现错误,系统即默认回滚事务
- 无法启动链接服务器 "........" 的 OLE DB 访问接口 "SQLNCLI10" 的嵌套事务。由于 XACT_ABORT 选项已设置为 OFF,因此必须使用嵌套事务。
- 事务中SET XACT_ABORT各种用法
- 存储过程中的 SET XACT_ABORT ON 和事务
- set XACT_ABORT ON与判断事务的异同
- SET XACT_ABORT用法(事务)
- SET XACT_ABORT ON 数据库事务
- ADO.NET事务和Set Xact_Abort 以及MSDTC
- 无法启动链接服务器 "XXXXXX" 的 OLE DB 访问接口 "MSDASQL" 的嵌套事务。由于 XACT_ABORT 选项已设置为 OFF,因此必须使用嵌套事务。
- SELECT 失败,因为下列 SET 选项的设置不正确: 'ARITHABORT'。请确保 SET 选项正确无误
- SET XACT_ABORT各种用法及显示结果
- SET XACT_ABORT各种用法及显示结果
- SELECT 失败,因为下列 SET 选项的设置不正确:'ARITHABORT'
- Sql servel 事物回滚一(XACT_ABORT 事物回滚)