交友约会| 杂志期刊| 小说| 论坛| 电影下载| 两性知识| 电脑知识| 汽车| 旅游| 收藏

SQL Server怪辟:异常与孤立事务

来源:天极网 作者:pengdali 出处:综艺读书 2007-07-10 进入讨论组
关 键 词:sql server  os  

一、首先从SQL Server中的Error讲起,SQL中错误处理有些怪辟,错误级别同是16,但结果都不同。

select * from 一个不在的表

if @@error<>0

print '这个没有输出'

go

raiserror('',16,3)

if @@error<>0

print '这个输出了'

go

exec('select * from 一个不在的表')

if @@error<>0

print '这个输出了'

go

exec sp_executesql N'select * from 一个不在的表'

if @@error<>0

print '这个输出了'

这样你可以发现通过exec或sp_executesql执行可疑的sql,这样就可以在后面捕捉到被异常终止的错误。

二、引出孤立事务

1、孤立事务的产生

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

begin tran

select * from 一个不在的表

if @@error<>0

begin

print '没有执行到这里来!'

if @@trancount<>0 rollback tran

end

commit tran

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

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

2、使用现有手段解决孤立事务

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

if @@trancount<>0 rollback tran --在这里写可以让孤立事务只保持到下次你的过程被调用

begin tran

select * from 一个不在的表

if @@error<>0

begin

print '没有执行到这里来!'

if @@trancount<>0 rollback tran

end

commit tran

---执行后你看看 当前连接的活动事务数为1,但重复执行不会累加

print @@trancount print '当前连接的活动事务数'

三、使用set xact_abort来控制部分违反约束的错误的执行过程

create table Table1 (a int check(a>100))

go

set xact_abort on

begin tran

insert table1 values(10)

print '这里没有被执行'

commit tran

go

print '' print '==============================================' 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 '' print '==============================================' print ''

set xact_abort off

begin tran

insert  一个不在的表 values(10)

print '这里没有被执行'

commit tran

go

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

if @@trancount<>0 rollback tran

对于sql中怪辟的各种错误,和孤立事务在t-sql编程中一定要注意,小心孤立事务的陷阱,尽量避免浪费或孤立资源,Microsoft公开宣布过SQLServe下一版本Yukon将有内置异常处理语法。那时可以通过代码对无法预料的错误有更好的控制。

更多文章 更多内容请看SQL Server  SQL Server  SQL Server 数据处理专题专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
综艺读书宗旨
相关专题
·SQL Server 数据处理专题 (1451篇文章)
·SQL Server 索引和查询专题 (2641篇文章)
·SQL Server (1414篇文章)
·SQL Server (1415篇文章)
热点标签: sql server  os  
最新技术文档
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
百度推荐,商机无限
搜索您感兴趣的内容
Web 全站
综艺电脑频道编辑信箱  告诉我们您想看的专题或文章

友情互链 | 收藏本站 | 联系我们 | 在线留言 | 京ICP备08008424号|