学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> SQL >> SQL Server中死锁的原因及解决办法


SQL Server中死锁的原因及解决办法


其实所有的死锁最深层的原因就是一个:资源竞争。

表现一:

一个用户A 访问表A(锁住了表A),然后又访问表B,另一个用户B 访问表B(锁住了表B),然后企图访问表A。这时用户A由于用户B已经锁住表B,它必须等待用户B释放表B,才能继续,好了他老人家就只好老老实实在这等了。

同样用户B要等用户A释放表A才能继续这就死锁了。

解决方法:

这种死锁是由于你的程序的BUG产生的,除了调整你的程序的逻辑别无他法。

仔细分析你程序的逻辑:

1:尽量避免同时锁定两个资源;

2: 必须同时锁定两个资源时,要保证在任何时刻都应该按照相同的顺序来锁定资源。

表现二:

用户A读一条纪录,然后修改该条纪录,这是用户B修改该条纪录,这里用户A的事务里锁的性质由共享锁企图上升到独占锁(for update),而用户B里的独占锁由于A有共享锁存在所以必须等A释放掉共享锁,而A由于B的独占锁而无法上升的独占锁也就不可能释放共享锁,于是出现了死锁。

这种死锁比较隐蔽,但其实在稍大点的项目中经常发生。

解决方法:

让用户A的事务(即先读后写类型的操作),在select 时就是用Update lock

语法如下:

select * from table1 with(updlock) where ....

(T115)

技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

谢谢!正在查询中……...
游客 发表于2008-3-17 8:33:18
对"SQL Server中死锁的原因及解决办法"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 SQL Server中死锁的原因及解决办法 相关内容
Google搜索中 SQL Server中死锁的原因及解决办法 相关内容
雅虎中 SQL Server中死锁的原因及解决办法 相关内容
Sogou搜索中 SQL Server中死锁的原因及解决办法 相关内容

相关软件 最新回复帖子:

·SQL Server中死锁的原因及解决办法
·3D Home帮您轻松玩转三维家装设计
·AutoCAD拉伸命令快速绘制立体五角星
·CorelDraw绘图常见问题解决技巧
·nesox让电子邮件营销原来如此轻松!
·Freehand常用特色功能疑难解答
·出行在外让OutlookExpress自动回复
·AutoCAD模拟空间与图纸空间简介
·不放光盘 Windows自动修复受损的文件
·AutoCAD三维基础实例教程


  相关软件 SQL Server中死锁的原因及解决办法相关文章
缩小SQL Server中日志文件的方法介绍 Oracle SQL性能优化系列介绍(下)
Oracle SQL性能优化系列介绍(上) SQL Stored Procedures 的破解工具
用SQL*Loader将Excel数据导出到Oracle 教您 SQL SERVER 2005 同步复制技术
Windows 2003不太喜欢SQL Server2000 MYSQL,Oracle,SQL数据库在JSP中的驱动
SQL Server 和 Oracle 常用函数对比 一个有关多条件数据库查询的优化方法
用ADO管理SQL Server数据库及其设备 通用SQL数据库查询语句精华使用简介
Oracle中捕获问题SQL解决CPU过渡消耗 如何在Oracle数据库10g中跟踪SQL
SQL Server对文件内容进行全文检索查询 ORACLE中常用的SQL语法和数据对象
Oracle中使用SQL MODEL定义行间计算 在MySQL中执行SQL语句时的几个注意点
向你谈谈SQLPlus中的复制和粘贴技巧 热点关注:IBM将与微软开始激烈对决