全接触sqlserver异常与孤立事务

灬你当我浮夸吧

灬你当我浮夸吧

2016-01-29 16:45

全接触sqlserver异常与孤立事务,全接触sqlserver异常与孤立事务
 一、首先从sqlserver中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(a100))
  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 ’’’’
  
展开更多 50%)
分享

猜你喜欢

全接触sqlserver异常与孤立事务

SQLServer
全接触sqlserver异常与孤立事务

XML Schema全接触

Web开发
XML Schema全接触

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Photoshop 6.0 全接触

PS PS教程
Photoshop 6.0 全接触

托盘编程全接触

C语言教程 C语言函数
托盘编程全接触

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

WindowsXP关机故障全接触

windows 操作系统
WindowsXP关机故障全接触

WinXP:关机故障全接触

windows 操作系统
WinXP:关机故障全接触

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Photoshop打造逸长发少女音乐主题

Photoshop打造逸长发少女音乐主题

SQL Server中发送邮件的新方式

SQL Server中发送邮件的新方式
下拉加载更多内容 ↓