SQL SERVER数据库死锁处理与排查.pdf

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQL SERVER LOCK 事务(进程  ID 60)与另一个进程被死锁在锁资源上,并且已被选作死锁牺牲品。请重新运行 该事务。    一、问题描述  近期,由于二十多台电脑同时访问一台 SQL Server 2005 服务器,并且数据每间隔 3 分钟从 另一个 Oracle 数据库中读取数据信息供 20 多台电脑查询与显示,在信息显示时,经常报下 面的错误,导致程序出错。    ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐  事务(进程  ID 60)与另一个进程被死锁在 锁  资源上,并且已被选作死锁牺牲品。请重新运 行该事务。     在   System.Data.SqlClient.SqlConnection.OnError(SqlException  exception,  Boolean  breakConnection)     在   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException  exception,  Boolean  breakConnection)     在   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject  stateObj)     在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler,  SqlDataReader  dataStream,  BulkCopySimpleResultSet  bulkCopyHandler,  TdsParserStateObject  stateObj)     在 System.Data.SqlClient.SqlDataReader.HasMoreRows()     在 System.Data.SqlClient.SqlDataReader.ReadInternal(Boolean setTimeout)     在 System.Data.SqlClient.SqlDataReader.Read()     在  HonryLCD.honry.lcd.LcdPatientFrm.getBed()      二、处理说明  1、查看锁状态  连上数据库后,在查询界面中按 Ctrl+2 键可以查询状态,如下:      2、事务(进程 ID 59)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲 品。请重  update t_sms_send set msg_flag = -1 where id in (select top 100 id from t_sms_send where msg_flag=-2) 此句应该改为 update t_sms_send set msg_flag = -1 where id in (select top 100 id from t_sms_send with (nolock) where msg_flag=-2)     事务(进程  ID  )与另一个进程已被死锁在  lock  资源上,且该事务已被选作死锁牺牲品。 请重新运行该事务  其实所有的死锁最深层的原因就是一个:资源竞争 表现一:  一个用户 A 访问表 A(锁住了表 A),然后又访问表 B  另一个用户 B 访问表 B(锁住了表 B),然后企图访问表 A  这时用户 A 由于用户 B 已经锁住表 B,它必须等待用户 B 释放表 B,才能继续,好了他老人家 就只好老老实实在这等了  同样用户 B 要等用户 A 释放表 A 才能继续这就死锁了  解决方法:  这种死锁是由于你的程序的 BUG 产生的,除了调整你的程序的逻辑别无他法  仔细分析你程序的逻辑,  1:尽量避免同时锁定两个资源  2: 必须同时锁定两个资源时,要保证在任何时刻都应该按照相同的顺序来锁定资源.  表现二:  用户

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档