我的生产服务器上有一个程序,它返回了这个错误:
我主要担心的是我的程序是否在生产服务器上 它在错误中返回我的源代码的位置?
还有什么是调试此类死锁错误的最佳方法 它是由服务器上缺少资源引起的吗?
事务(进程ID 73)在线程|上死锁通讯 用另一个进程缓冲资源并被选为 僵局受害者。重新运行该交易。 : 在 System.Data.SqlClient.SqlConnection.OnError(SqlException异常, Boolean breakConnection)
在System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception,Boolean breakConnection)
在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
在System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler,SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)
在System.Data.SqlClient.SqlDataReader.HasMoreRows()
at System.Data.SqlClient.SqlDataReader.ReadInternal(Boolean 的setTimeout)
在System.Data.SqlClient.SqlDataReader.Read()
在 Microsoft.Data.Extensions.Materializer`1.d__a.MoveNext()
在 Microsoft.Data.Extensions.Materializer`1.d__0.MoveNext()
在 System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
在System.Collections.Generic.List
1..ctor(IEnumerable
1 集合)在System.Linq.Enumerable.ToList [TSource](IEnumerable`1 source)
在Console.Export.DataProvider.ExportData(IEnumerable`1 activitiesParam)在D:\ Documents和 设置\ USER \桌面\ 11_16_2011 \ ITS \控制台\出口\ DataProvider.cs:行 44
在D:\ Documents和中的Console.Export.WarDataProvider.GetValues()中 设置\ USER \桌面\ 11_16_2011 \ ITS \控制台\出口\ DataProvider.cs:行 31
在Console.Export.ExportEngine.Export(IDataProvider提供商)中 D:\ Documents and 设置\ USER \桌面\ 11_16_2011 \ ITS \控制台\出口\ ExportEngine.cs:行 25
答案 0 :(得分:1)
编译程序时,是否在调试而不是发布配置中编译?如果您进行调试构建并将文件部署到服务器,那么它将显示其他诊断信息,在这种情况下这可能是一件好事。
以下是handling Deadlocks的指南。
答案 1 :(得分:1)
可以使用Sql Profiler正确检查死锁,它有一些事件用于此
<强>但强>
它不会显示所有收集的有用信息 - 将事件保存为xml并挖掘此xmls内部可以为您提供有关该问题的更多信息
或强>
您可以使用sql server对死锁进行内部日志记录到自己的错误日志中。使用跟踪标志1222和1204控制行为。
和强>
如果涉及死锁语句的其中一个使用table或pk scan,那么通常正确的索引解决死锁问题