SQLServer的怪辟:异常与孤立事务[1]

文章作者 100test 发表时间 2007:07:30 12:59:56
来源 100Test.Com百考试题网


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

以下是引用片段:
0select * from 一个不在的表
if @@error<>0
print 这个没有输出
go

raiserror(,16,3)
if @@error<>0
print 这个输出了
go

exec(0select * from 一个不在的表)
if @@error<>0
print 这个输出了
go

exec sp_executesql N0select * from 一个不在的表
if @@error<>0
print 这个输出了

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

  二、引出孤立事务:

  1、孤立事务的产生

以下是引用片段:
0select @@trancount 当前连接的活动事务数 --当前连接的活动事务数为0

begin tran

0select * from 一个不在的表
if @@error<>0
begin
print 没有执行到这里来!
if @@trancount<>0 rollback tran
end

commit tran

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

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

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

以下是引用片段:
print @@trancount print 当前连接的活动事务数 --当前连接的活动事务数为0

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

0select * from 一个不在的表
if @@error<>0
begin
print 没有执行到这里来!
if @@trancount<>0 rollback tran
end

commit tran

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

  print @@trancount print 当前连接的活动事务数
src="/ncre/js/wxgg.js">


相关文章


MySQL是否值得我们选择的正反五个理由[2]
数据库开发者常犯的十大错误,你有吗?[2]
九大数据仓库方案特点横向比较[1]
数据库开发者常犯的十大错误,你有吗?[1]
SQLServer的怪辟:异常与孤立事务[1]
快速掌握MySQL数据库中SELECT语句[1]
解决SQLServer虚拟内存不足情况
无法远程登入MySQL的几种解决办法[1]
三级辅导:数据库原理及应用课程习题二(答案)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛