【发布时间】:2008-12-01 01:31:34
【问题描述】:
我遇到了一个偶尔会死锁的网络应用程序
涉及 3 个查询。 2 正在尝试更新表
UPDATE AttendanceRoll
SET ErrorFlag = 0
WHERE ContractID = @ContractID
AND DATEPART(month,AttendanceDate) = DATEPART(month,@Month_Beginning)
AND DATEPART(year,AttendanceDate) = DATEPART(year,@Month_Beginning)
一个人正试图插入到表中
INSERT INTO AttendanceRoll
(AttendanceDate, ContractID, PersonID,
StartTime,
EndTime,
Hours, AbsenceReason,
UpdateCount, SplitShiftID, ModifiedBy, ModifiedDate)
SELECT
@P33, @P34, @P35,
CONVERT(datetime,REPLACE( @P36, '.', ':')),
CONVERT(datetime,REPLACE( @P37, '.', ':')),
@P38, @P39,
@P40, 1, @P41, GETDATE()
死锁图显示了页面锁和交换事件的一种循环排列,并且 2 个更新查询具有相同的服务器进程 ID。
如果有人对我应该如何解决这个问题有任何想法,将不胜感激。
如果有人需要,我可以发布死锁图。
谢谢 卡尔R
【问题讨论】:
-
请贴出图表,表格定义(包括任何索引)
标签: sql-server sql-server-2005 deadlock