`
gwh_08
  • 浏览: 335641 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sqlserver XACT_ABORT 事物与回滚

 
阅读更多

--创建测试表

use MyDB
CREATE TABLE mtest   
(  
        tt tinyint  
) 
GO

 

 --插入测试数据

---------------测试事务提交------------------

 

---有TRAN的情况
use MyDB
--错误行回滚,错误行前的不回滚,在错误行不终止,错误行之后的执行
SET XACT_ABORT OFF  
BEGIN TRAN
    INSERT INTO mtest  VALUES (1)  
    INSERT INTO mtest VALUES (2)   
    INSERT INTO mtest VALUES (-1) /* tinyint 的算术溢出错误 */   
    INSERT INTO mtest VALUES (3)   
    INSERT INTO mtest VALUES (4)   
COMMIT TRAN
GO
 
 
use MyDB
--事务终止并全部回滚,在错误行终止,错误行之后的不执行
SET XACT_ABORT ON  
BEGIN TRAN
    INSERT INTO mtest  VALUES (4)  
    INSERT INTO mtest VALUES (5)   
    INSERT INTO mtest VALUES (-2) /* tinyint 的算术溢出错误 */   
    INSERT INTO mtest VALUES (6)   
    INSERT INTO mtest VALUES (7)   
COMMIT TRAN
GO
 
---无TRAN的情况
use MyDB
--错误行回滚,错误行前的不回滚,在错误行不终止,错误行之后的执行  
SET XACT_ABORT OFF  
BEGIN  
    INSERT INTO mtest  VALUES (8)  
    INSERT INTO mtest VALUES (9)   
    INSERT INTO mtest VALUES (-3) /* tinyint 的算术溢出错误 */   
    INSERT INTO mtest VALUES (10)   
    INSERT INTO mtest VALUES (11)   
END  
GO
 
use MyDB
--错误行回滚,错误行前的不回滚,在错误行终止,错误行之后的不执行
SET XACT_ABORT ON  
BEGIN  
    INSERT INTO mtest  VALUES (12)  
    INSERT INTO mtest VALUES (13)   
    INSERT INTO mtest VALUES (-4) /* tinyint 的算术溢出错误 */   
    INSERT INTO mtest VALUES (14)   
    INSERT INTO mtest VALUES (15)   
END  
 
GO

 

分享到:
评论

相关推荐

    SQL事务设置SET XACT_ABORT后正确回滚

     对于大多数 OLE DB 提供程序(包括 SQL Server),隐性或显式事务中的数据修改语句必须将 XACT_ABORT 设置为 ON。不需要该选项的情况是提供程序支持嵌套事务时。有关更多信息,请参见分布式查询和分布式事务。 ...

    在存储过程中编写正确的事务处理代码(SQL_Server_2000_.doc

    1. **启用XACT_ABORT**:通过在事务开始前使用`SET XACT_ABORT ON`,可以确保在遇到错误时,整个事务会被回滚,而不是仅回滚出错的语句。这可以防止意外的后续操作。 ```sql SET XACT_ABORT ON; BEGIN TRAN UPDATE...

    SQL2000 事务回滚问题探讨

    总结来说,SQL2000中的事务回滚问题关键在于理解和有效利用`SET XACT_ABORT`选项来控制错误处理策略,以及在错误发生时及时回滚事务并提供适当的错误反馈。在编写涉及事务处理的存储过程或脚本时,确保正确处理错误...

    SQL Server事务和并发控制.ppt

    运行时,如果批处理或事务中某个操作违反约束,系统默认只回退到产生错误的语句。通过打开XACT_ABORT开关,可使系统自动回滚产生该错误的当前事务。

    SQL SERVER 2005 新增的几个小功能

    1. **`XACT_ABORT`设置**:启用该设置后,如果在事务中遇到错误,整个事务将被自动回滚。 2. **`BEGIN TRY`和`BEGIN CATCH`块**:`BEGIN TRY`块用于执行正常的业务逻辑;`BEGIN CATCH`块则用来处理可能出现的异常...

    在SQL Server 2005中解决死锁问题

    SET XACT_ABORT ON; DECLARE @r INT; SET @r = 1; WHILE @r BEGIN BEGIN TRAN; BEGIN TRY INSERT INTO Orders (CustomerId) VALUES (@#ALFKI@#); WAITFOR DELAY '00:00:05'; SELECT * FROM Orders WHERE ...

    sql server 事务处理

    6. **SET XACT_ABORT ON/OFF**:设置此选项可以控制当语句引发错误时事务的行为。默认情况下,ON会回滚整个事务,OFF则只影响引发错误的语句。 7. **事务隔离级别设置**:如`SET TRANSACTION ISOLATION LEVEL`命令...

    SQL Server 2005新功能-TSQL的描述

    SET XACT_ABORT ON选项可以开启事务的自动回滚,确保在发生错误时事务得到正确处理。 5. **公用表表达式(Common Table Expressions, CTE)**: CTE提供了一种创建临时结果集的方式,而无需使用临时表或视图。它们...

    SQLServer分布式事务问题

    - 对于大多数OLEDB提供程序(包括SQLServer),必须将隐式或显式事务中的数据修改语句中的XACT_ABORT设置为ON。这样可以确保一旦事务中的任意部分失败,则整个事务都会回滚。 5. **MSDTC设置** - 在“管理工具-...

    SQL Server 跨库同步数据

    否则,如果在执行过程中遇到错误,由于`SET XACT_ABORT ON`设置,事务将被自动回滚,防止不完整或不一致的数据被写入目标表。 在实际应用中,这种跨库同步数据的方法可能会结合SQL Server代理作业定期执行,以实现...

    SQL SERVER 2000开发与管理应用实例

    15.4.4 XACT_ABORT与RAISERROR的疑难解答 477 15.5 游标处理疑难解答 479 15.5.1 全局游标与本地游标 479 15.5.2 检查指定的游标是否存在 480 15.5.3 事务提交或者回滚对游标的影响 482 15.5.4 可...

    SQL Server存储过程中编写事务处理的方法小结

    当设置`SET XACT_ABORT ON`时,如果在事务中的任何语句出现错误,SQL Server将自动回滚整个事务,并终止执行。这有助于避免因错误导致的部分事务提交。例如: ```sql SET XACT_ABORT ON; BEGIN TRAN UPDATE ...

    SQL Server中解决死锁的新方法介绍

    在 SQL Server 中,解决死锁的办法是牺牲掉其中的一个事务,抛出异常,并回滚事务。在 SQL Server 2000 中,语句一旦发生异常,T-SQL 将不会继续运行,上面被牺牲的连接中,print @#end tran@# 语句将不会被运行。...

    SQL SERVER事务处理详解.doc

    `SET XACT_ABORT`是一个非常有用的设置,它决定了当Transact-SQL语句遇到运行时错误时,是否自动回滚整个事务。如果设置为ON,任何错误都会导致事务回滚,这对于确保数据一致性非常有用,特别是在存储过程中。 例如...

    MS-SQL Server杂志-事务全攻略

    - **SET XACT_ABORT ON/OFF**:确定是否在发生错误时自动回滚当前事务。 ##### 事务嵌套的例子 假设需要在一个事务中执行多个步骤,并且希望这些步骤作为一个整体成功或失败,则可以使用嵌套事务。例如: ```sql ...

    MS DTC配置,ATL,COM

    在开始事务的语句前添加`set xact_abort ON`,这可以确保在大多数OLE DB提供程序(包括SQL Server)中,即使发生错误,事务也会被回滚,避免数据不一致。 #### 5. MSDTC安全配置 在“组件服务”中,找到“我的电脑...

    浅析SQL Server中包含事务的存储过程

    2. `SET XACT_ABORT ON`:这是一个重要的设置,它指示SQL Server在遇到错误时自动回滚当前事务。默认情况下,XACT_ABORT是OFF,这意味着错误可能只影响引发错误的语句,而不会影响整个事务。开启此选项确保任何错误...

    sqlserver2000基础(高手也有用)

    15.4.4 XACT_ABORT与RAISERROR的疑难解答 477 15.5 游标处理疑难解答 479 15.5.1 全局游标与本地游标 479 15.5.2 检查指定的游标是否存在 480 15.5.3 事务提交或者回滚对游标的影响 482 15.5.4 可更新的...

    Sqlserver 存储过程中结合事务的代码

    - `SET XACT_ABORT ON`:如果在事务中发生错误,该选项会自动回滚事务。在这个例子中,当尝试插入非法数据时,由于`LockTypeID`应为整型,但尝试插入字符串'A',这会导致错误并触发自动回滚。 4. **方式二:使用@@...

Global site tag (gtag.js) - Google Analytics