時々デッドロックする Web アプリケーションに問題があります
関連するクエリは 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)
そして、1つはテーブルに挿入しようとしています
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