论坛登陆 注册 教程 笑话 影视 投稿
首页 | 页界资讯 | 网络应用 | 软件应用 | 组网技术 | 网络原理 | 聊天通讯 | 网管知识 | 帮助
笑话 | 操作系统 | 注 册 表 | 编程开发 | 数 据 库 | 媒体动画 | 网页设计 | 图形图象 | 地图
论坛 | 网络安全 | 安全防范 | 服 务 器 | 硬件学堂 | 路由技术 | 搜索研究 | 站长经验 | 投稿
影院 | 教育频道 | 特色专题 | 精文荟萃 | 注 册 码 | 论坛社区 | 网站地图 | 广告服务 | 旧版
设为首页 加入收藏
当前位置:首页>>文章>>数据库>>Mssql>>正文

全接触sqlserver异常与孤立事务

www.xker.com 作者: 来源:网络转载 加入日期:2006-4-7 10:18:27

【问题提问、论坛交流】

一、首先从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(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)

本新闻共2页,当前在第1页  1  2  

编辑:xker.com

上一篇:用DTS导入多个文件数据到SQL Server中
下一篇:没有了
关闭窗口】【技术交流】【收藏此页
相关文章
·用DTS导入多个文件数据到SQL Server中·实现将Excel表导入数据库(SQLServer)·SqlServer存储过程/函数加/解密
·sql server日志文件总结及日志满的处·SQL Server 2005 全面专题·SQLServer和Access、Excel数据传输简
·关于MSSQL占用过多内存的问题·用VB备份和恢复SQL Server数据库的方·创建数据库
·压缩数据库·数据库维护计划·系统数据库
·实例数据库·创建数据库表·自定义数据类型
推荐文章 最新文章 热门文章
·联手杀毒软件 打造无毒迅雷下载文件
·Tomcat 配置技巧精华详解分析
·玩转系统 Window系统补丁知多少
·做好备份 硬盘数据大迁移
·中用也中看 全面打造个性化迅雷下载
·WIN2000下JSP服务器的安装
·Oracl数据库中大数据的备份
·用注册表找回常用软件序列号
·搜索引擎优化的最高境界是忘记搜索引
·全面解析系统剪贴功能资源占用
·在ASP.NET中防止注入攻击
·仅用css编写无限分级弹出菜单
·完整图解Tomcat 5.0.28 安装笔记
·用Java快速开发Linux GUI应用
·妙用Windows磁盘配额 让黑客无从下手
·全接触sqlserver异常与孤立事务
·用DTS导入多个文件数据到SQL Server中
·层层剖析 挖掘液晶显示器的秘密
·通过禁止使用xp_cmdShell提高安全
·进行ASP.NET Web安全验证方法
·利用ASP.NET 的内置功能抵御 Web 攻击
·ASP.NET中如何防范SQL注入式攻击
·在ASP.NET中访问SQL Server
·微软承认修改IE失误 将提供兼容补丁
·联手杀毒软件 打造无毒迅雷下载文件
·Tomcat 配置技巧精华详解分析
·安全攻略:突破组策略运行限制的方法
·解读珊瑚虫CoralQQ.ini代码的秘密
·玩转系统 Window系统补丁知多少
·做好备份 硬盘数据大迁移
·个人简历表格
·免费代理IP(每日更新)
·QQ密码丢失后能做的事情:快速找回密码
·QQ收费头像免费使用的方法 
·Norton AntiVirus 2006 注册码(激活
·系统优化 专题
·WinRAR 3.51 注册码
·豪杰超级解霸V9.1正版注册码
·找回QQ密码的注意事项 
·史上最强QQ个人档案资料欣赏
·Ajax技术开发指南
·QQ空间皮肤代码
·最经典的黑客入门教材
·求职简历封皮
·ACDSee v8.0注册码
评论

设为首页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyright © 2003-2006 xker.com All rights reserved.小新技术网 合作广告QQ:12231446
本页浏览次数: