询问者
请教一个问题:事务(进程 ID 171)与另一个进程被死锁在 锁 | 通信缓冲区 资源上

问题
全部回复
-
多个用户同时操作了一个表造成的数据库死锁,在你的项目中所有的查询的sql语句中加上nolock,
select * from A(nolock)
参照
http://blog.csdn.net/laers/article/details/1922215
http://blog.csdn.net/zx13525079024
-
不建议加nolock来避免死锁这样会牺牲掉ACID,建议查找死锁的原因,然后作相应的调整,来避免死锁。
可以参考下面的文档
http://msdn.microsoft.com/zh-cn/library/ms188246.aspx
- 已编辑 Jacky_shen 2012年2月10日 9:16
- 已标记为答案 Lie YouModerator 2012年2月15日 2:25
- 取消答案标记 yyyukai 2012年6月12日 6:45
-
同时一个多个用户访问同一个表会发生blocking,但并不是死锁发生的必要条件,
比较常用的方法是避免“循环等待条件”,具体的解决方法可以参考下面的URL。
http://www.cnblogs.com/happyhippy/archive/2008/11/14/1333922.html
- 已编辑 Jacky_shen 2012年2月11日 2:58
- 已标记为答案 Lie YouModerator 2012年2月15日 2:25
- 取消答案标记 yyyukai 2012年6月12日 6:45
-
dear
死锁是多线程对同一资源处理不当所造成,请参考以下
http://www.dotblogs.com.tw/yc421206/archive/2011/01/18/20878.aspx
同样的在SQL SERVER里会造成这样的原因也是锁定不当所造成
http://www.cnblogs.com/happyhippy/archive/2008/11/14/1333922.html
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
第五段落也有写到我不知道你的code怎样写,但你可以往C#以及SQL的lock语句下手
秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
- 已编辑 余小章MVP 2012年2月13日 7:51
- 已标记为答案 Lie YouModerator 2012年2月15日 2:25
- 取消答案标记 yyyukai 2012年6月12日 6:46
-
可參考一下,Analyzing Deadlocks with SQL Server Profiler
應該是有交易,造成Resource互咬住! 如果是Report的話,應該只是查詢不會有交易吧! 還是您在產生Report時,也包在交易之中呢? 請檢查一下哦!
亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
- 已标记为答案 Lie YouModerator 2012年2月15日 2:25
- 取消答案标记 yyyukai 2012年6月12日 6:46