1
我有一个更新存储过程,我从C#代码调用它,我的代码同时在3个线程中运行。更新语句通常会引发错误“事务(进程ID)与另一进程在锁资源上死锁,并且被选为死锁受害者。重新运行事务”。我如何解决这个在SQL Server 2014或C#代码?事务(进程ID)在另一个进程的锁资源上死锁,并被选为死锁牺牲品。在SQL服务器2014
更新存储过程:
ALTER PROCEDURE sp_UpdateSP
@RecordID nvarchar(50),
@FileNetID nvarchar(50),
@ClassName nvarchar(150)
AS
Begin tran t1
UPDATE MYTABLE SET [email protected], [email protected], CONTROLID='FileAttach' where [email protected]
Commit tran t1
表索引: 非唯一,非聚集OTRECORDID升序为nvarchar(255)
感谢
此过程不会单独导致任何死锁。您是否在线程中的任何其他过程或查询中使用此表? –
不要用'sp_'开始你的过程名称。 [sp_前缀仍然是否定的? - 亚伦伯特兰](https://sqlperformance.com/2012/10/t-sql-queries/sp_prefix) – SqlZim
你说'otrecordid'是'nvarchar(255)'。为什么'@ RecordId''nvarchar(50)'的参数? – SqlZim