--创建测试表
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
相关推荐
对于大多数 OLE DB 提供程序(包括 SQL Server),隐性或显式事务中的数据修改语句必须将 XACT_ABORT 设置为 ON。不需要该选项的情况是提供程序支持嵌套事务时。有关更多信息,请参见分布式查询和分布式事务。 ...
1. **启用XACT_ABORT**:通过在事务开始前使用`SET XACT_ABORT ON`,可以确保在遇到错误时,整个事务会被回滚,而不是仅回滚出错的语句。这可以防止意外的后续操作。 ```sql SET XACT_ABORT ON; BEGIN TRAN UPDATE...
总结来说,SQL2000中的事务回滚问题关键在于理解和有效利用`SET XACT_ABORT`选项来控制错误处理策略,以及在错误发生时及时回滚事务并提供适当的错误反馈。在编写涉及事务处理的存储过程或脚本时,确保正确处理错误...
运行时,如果批处理或事务中某个操作违反约束,系统默认只回退到产生错误的语句。通过打开XACT_ABORT开关,可使系统自动回滚产生该错误的当前事务。
1. **`XACT_ABORT`设置**:启用该设置后,如果在事务中遇到错误,整个事务将被自动回滚。 2. **`BEGIN TRY`和`BEGIN CATCH`块**:`BEGIN TRY`块用于执行正常的业务逻辑;`BEGIN CATCH`块则用来处理可能出现的异常...
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 ...
6. **SET XACT_ABORT ON/OFF**:设置此选项可以控制当语句引发错误时事务的行为。默认情况下,ON会回滚整个事务,OFF则只影响引发错误的语句。 7. **事务隔离级别设置**:如`SET TRANSACTION ISOLATION LEVEL`命令...
SET XACT_ABORT ON选项可以开启事务的自动回滚,确保在发生错误时事务得到正确处理。 5. **公用表表达式(Common Table Expressions, CTE)**: CTE提供了一种创建临时结果集的方式,而无需使用临时表或视图。它们...
- 对于大多数OLEDB提供程序(包括SQLServer),必须将隐式或显式事务中的数据修改语句中的XACT_ABORT设置为ON。这样可以确保一旦事务中的任意部分失败,则整个事务都会回滚。 5. **MSDTC设置** - 在“管理工具-...
否则,如果在执行过程中遇到错误,由于`SET XACT_ABORT ON`设置,事务将被自动回滚,防止不完整或不一致的数据被写入目标表。 在实际应用中,这种跨库同步数据的方法可能会结合SQL Server代理作业定期执行,以实现...
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 可...
当设置`SET XACT_ABORT ON`时,如果在事务中的任何语句出现错误,SQL Server将自动回滚整个事务,并终止执行。这有助于避免因错误导致的部分事务提交。例如: ```sql SET XACT_ABORT ON; BEGIN TRAN UPDATE ...
在 SQL Server 中,解决死锁的办法是牺牲掉其中的一个事务,抛出异常,并回滚事务。在 SQL Server 2000 中,语句一旦发生异常,T-SQL 将不会继续运行,上面被牺牲的连接中,print @#end tran@# 语句将不会被运行。...
`SET XACT_ABORT`是一个非常有用的设置,它决定了当Transact-SQL语句遇到运行时错误时,是否自动回滚整个事务。如果设置为ON,任何错误都会导致事务回滚,这对于确保数据一致性非常有用,特别是在存储过程中。 例如...
- **SET XACT_ABORT ON/OFF**:确定是否在发生错误时自动回滚当前事务。 ##### 事务嵌套的例子 假设需要在一个事务中执行多个步骤,并且希望这些步骤作为一个整体成功或失败,则可以使用嵌套事务。例如: ```sql ...
在开始事务的语句前添加`set xact_abort ON`,这可以确保在大多数OLE DB提供程序(包括SQL Server)中,即使发生错误,事务也会被回滚,避免数据不一致。 #### 5. MSDTC安全配置 在“组件服务”中,找到“我的电脑...
2. `SET XACT_ABORT ON`:这是一个重要的设置,它指示SQL Server在遇到错误时自动回滚当前事务。默认情况下,XACT_ABORT是OFF,这意味着错误可能只影响引发错误的语句,而不会影响整个事务。开启此选项确保任何错误...
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 可更新的...
- `SET XACT_ABORT ON`:如果在事务中发生错误,该选项会自动回滚事务。在这个例子中,当尝试插入非法数据时,由于`LockTypeID`应为整型,但尝试插入字符串'A',这会导致错误并触发自动回滚。 4. **方式二:使用@@...