SQL Server 数据库执行超时 回滚所有的事务

无锡阔微信息科技 2010-08-30 01:34:53
SQL Server 数据库执行超时时 回滚所有的事务,请问各位牛人这个SQL语句怎么写啊
...全文
365 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
claro 2010-08-30
  • 打赏
  • 举报
回复
多F1 ,多问自己为什么 ,多实践 。
  • 打赏
  • 举报
回复
请教各位牛人2000怎么尽可能捕获多的错误啊
obuntu 2010-08-30
  • 打赏
  • 举报
回复
当 SET XACT_ABORT 为 ON 时,如果执行 Transact-SQL 语句产生运行时错误,则整个事务将终止并回滚。

当 SET XACT_ABORT 为 OFF 时,有时只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。如果错误很严重,那么即使 SET XACT_ABORT 为 OFF,也可能回滚整个事务。OFF 是默认设置。

编译错误(如语法错误)不受 SET XACT_ABORT 的影响。

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

SET XACT_ABORT 的设置是在执行或运行时设置,而不是在分析时设置。
  • 打赏
  • 举报
回复
SQL Server 2000好像用不了,请问各位怎么解决这个问题啊
Austindatabases 2010-08-30
  • 打赏
  • 举报
回复
set xact_abort on


关键在这句上
wzy_love_sly 2010-08-30
  • 打赏
  • 举报
回复
if object_id('表a') is not null
drop table 表a
go
if object_id('表b') is not null
drop table 表b
go
create table 表a(name varchar(20) not null)
create table 表b(name varchar(20))

begin try
begin tran
insert into 表a select null
insert into 表b select 'c'
commit tran
end try
begin catch
rollback
end catch
--全部回滚

set xact_abort on
begin try
begin tran
insert into 表a select 'a'
insert into 表b select 'c'
select * from oooo --高级别错误 设置xact_abort,否则不会回滚
commit tran
end try
begin catch
rollback
end catch

select * from 表a
select * from 表b

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧