我有一个计划的作业,其中一个SP每天都在运行(SQL Server 2005)。最近我经常遇到这个SP的死锁问题。以下是错误消息:
Message
Executed as user: dbo. Transaction (Process ID 56) was deadlocked on thread |
communication buffer resources with another process and has been chosen as the deadlock
victim. Rerun the transaction. [SQLSTATE 40001] (Error 1205). The step failed.SP对一些表使用了一些互连视图,其中之一是具有数百万行数据的大型数据表(并且还在不断增长)。我不确定对表的任何作业或查询是否会导致表无法访问SP?我要用query调查一下谁在线了。这可能会在此期间暴露SQL server上某些查询或人员。
不确定是否有人有类似的问题,或者这是已知的SQL 2005问题?为了避免死锁,我应该在SP或SQL server上执行任何其他操作吗?
发布于 2009-08-11 15:08:34
使用SQL Server Profiler跟踪正在运行的所有查询。我将输出放入SQL Server中。这将帮助您找出哪些表正在访问您的特定表。发布你的发现,我们可以帮助你。
发布于 2009-08-11 15:44:55
死锁是指两个事务各自持有一些资源,并想要另一个事务也拥有的资源--这两个事务都不能继续,因为它们都在等待对方。它们不能被完全消除,但可以做很多事情来减轻它们。Remus和Raj建议在Profiler中捕获更多关于它们的信息-我也建议-通常优化您的查询(如果您知道涉及哪些查询)也会有所帮助。这里有一篇MSDN文章可以帮助你上手:"Minimizing Deadlocks“。
https://stackoverflow.com/questions/1260931
复制相似问题