死锁的原因?

zcc_cl 2003-12-06 01:22:29
我将单位的MS-SQL从7.0版升级到了2000(都是NT4.0+SP6平台,但硬件由HP LH3换成了865PE+P4 2.4C),但原来运行正常的系统却从此经常发生死锁(从"企业管理器"--"管理"--"进程"中可看到"正在阻塞"的信息),请问这是什么原因?难道NT和SQL2000有兼容性问题?还是硬件有问题?
...全文
73 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2003-12-06
  • 打赏
  • 举报
回复
---跟踪一下,看引起死锁的是些什么处理

开始--程序--MS SQLSERVER
--事件探察器(SQL Profiler)
--文件
--新建
--设置跟踪的项目...
--然后数据库的调用情况就会显示出来
welyngj 2003-12-06
  • 打赏
  • 举报
回复
在死锁中,由于多种线程在相互控制或其它线程控制的一套资源中等待,所以无法继续。死锁是循环相关的,最好通过标识相关链和有关资源中的参与者,然后为各种其它线程选择资源上中断死锁的线程来加以解决。

当死锁发生时,用户收到如下错误。

Transaction (Process ID xxx) was deadlocked on (xxx) resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

错误标识出事务在其上被锁定的资源。该资源可以是锁、并行(或通讯缓冲区)、等待线程或它们之间的组合。

要解决死锁,就必须终止循环中的一个参与者。选取死锁牺牲品时,Microsoft® SQL Server™ 2000 会查看所有的参与线程以及每个线程做了多少工作。通常,SQL Server 会选择工作量最小的参与线程作为死锁牺牲品。

使用 SQL Server 2000,可以确定参与死锁的资源,还可以用 SQL 事件探查器或跟踪标记 1204 解决锁的疑难问题。SQL 事件探查器是在 SQL Server 企业管理器中提供的一种图形工具。SQL 事件探查器提供基本的死锁检测信息

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧