相关疑难解决方法(0)

如何摆脱SQL Server 2005和C#应用程序中的死锁?

我在C#for Windows服务中有一个代码,它主要负责更新我的数据库中的表中的记录,但是我的日志中总是出现很多错误,所有错误都是关于资源的死锁,

这是错误:

System.Data.SqlClient.SqlException(0x80131904):事务(进程ID 57)在锁资源上与另一个进程死锁,并被选为死锁牺牲品.重新运行该交易.在System.Data.SqlClient.SqlConnection.OnError(SqlException异常,Boolean breakConnection,Action1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSourceSystem.Data.SqlClient.SqlCommand.ExecuteNonQuery的System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1完成,String methodName,Boolean sendToPipe,Int32 timeout,Boolean asyncWrite)中的1完成,Int32超时,任务和任务,布尔asyncWrite) ()在WheelTrackListener.DataAccess.SQLDBA.ExecuteNQuery(SqlCommand cmd,Boolean isShowError,ConnectionStringType CountryCode,String deviceID,Int32 retry,String functionCallName)ClientConnectionId:e45e4cf1-a113-46b7-b9b5-dc5ee8111406

现在,我想问一下,我可以尝试或检查资源是否被锁定?如果锁定如何等待更新,直到它被释放?

这是我目前的代码:

public static int updateVehicleLastPosition(string UTCDate, string …
Run Code Online (Sandbox Code Playgroud)

c# sql-server deadlock sql-server-2005

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×1

deadlock ×1

sql-server ×1

sql-server-2005 ×1