我有一个更新存储过程,我从C#代码中调用它,并且我的代码同时在3个线程中运行。更新语句通常会抛出错误:“事务(进程ID)在与另一个进程锁定资源时发生死锁,并被选择为死锁牺牲者。重新运行事务。” 我该如何在SQL Server 2014或C#代码中解决这个问题?
更新存储过程:
ALTER PROCEDURE sp_UpdateSP
@RecordID nvarchar(50),
@FileNetID nvarchar(50),
@ClassName nvarchar(150)
AS
Begin tran t1
UPDATE MYTABLE SET FilenetID=@FileNetID, DOCUMENT_TYPE=@ClassName, CONTROLID='FileAttach' where OTRECORDID=@RecordID
Commit tran t1
表索引: 非唯一,非聚集的 OTRECORDID 升序 nvarchar(255)
谢谢
sp_
开头命名你的存储过程。sp_前缀仍然是个禁忌吗?- Aaron Bertrand - SqlZimotrecordid
是nvarchar(255)
。那么为什么@RecordId
参数是nvarchar(50)
? - SqlZim