快捷搜索:  xxx  as  推理研究所  幼幼  侦探研究所

澳门银河网址68yh:全接触sqlserver异常与孤立事务



一、首先从sqlserver中error讲起,sql中差错处置惩罚有些怪辟 差错级别同是16但结果都不合。

select * from 一个不在的表

if @@error0

print ’’这个输出了’’

go

exec(澳门银河网址68yh’’select * from 一个不在的表’’)

if @@error0

print ’’这个输出了’’

这样你可以发明经由过程exec或sp_executesql履行可疑的sql,这样就可以在后面捕捉到被非常终止的差错。

二、引出伶仃事务:

1、伶仃事务的孕育发生

select @@trancount 当前连接的活动事务数 --当前连接的活动事务数为0

begin tran

select * 澳门银河网址68yhfrom 一个不在的表

if @@error0 rollback tran

end

commit tra澳门银河网址68yhn

select @@trancount 当前连接的活动事务数--履行后你看看 当前连接的活动事务数为1,且重复履行会每次累加,这是很耗资本的。

应为rollback根本就没有被回滚。

2、应用现有手段办理伶仃事务

print @@trancount print ’’当前连接的活动事务数’’ --当前连接的活动事务数为0

if @@trancount0

begin

print ’’没有履行到这里来!’’

if @@trancount100))

go

set xact_abort on

begin tran

insert table1 values(10)

print ’’这里没有被履行’’

commit tran

go

print ’’’’ print ’’=============澳门银河网址68yh=================================’’ print ’’’’

set xact_abort off

begin tran

insert table1 values(10)

print ’’这里被履行’’

commit tran

go

drop table table1

但 set xact_abort 对付编译孕育发生的差错确没有起感化,且同样会孕育发生伶仃事务

set xact_abort on

begin tran

insert一个不在的表 values(10)

print ’’这里没有被履行’’

commit tran

go

print ’澳门银河网址68yh’’’ print ’’==============================================’’ print ’’’’

set xact_abort off

begin tran

insert一个不在的表 values(10)

print ’’这里没有被履行’’

commit tran

go

select @@trancount 当前连接的活动事务数 ---有两个伶仃事务

if @@trancount

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: