Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 生产中的控制台程序死锁_C#_Linq_Sql Server 2005_Deadlock - Fatal编程技术网

C# 生产中的控制台程序死锁

C# 生产中的控制台程序死锁,c#,linq,sql-server-2005,deadlock,C#,Linq,Sql Server 2005,Deadlock,我的生产服务器上有一个程序,该程序返回此错误: 我主要关心的是,如果我的程序在生产服务器上,为什么是 它会返回我的源代码在错误中的位置吗 还有,调试此类死锁和错误的最佳方法是什么 这是由于服务器上缺少资源造成的吗 事务(进程ID 73)在线程通信上死锁 与另一个进程缓冲资源,并已被选为 死锁受害者。重新运行事务:在 System.Data.SqlClient.SqlConnection.OnError(SqlException异常, 布尔(断开连接) 位于System.Data.SqlClien

我的生产服务器上有一个程序,该程序返回此错误:

  • 我主要关心的是,如果我的程序在生产服务器上,为什么是 它会返回我的源代码在错误中的位置吗

  • 还有,调试此类死锁和错误的最佳方法是什么 这是由于服务器上缺少资源造成的吗

  • 事务(进程ID 73)在线程通信上死锁 与另一个进程缓冲资源,并已被选为 死锁受害者。重新运行事务:在 System.Data.SqlClient.SqlConnection.OnError(SqlException异常, 布尔(断开连接)

    位于System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常,布尔断开连接)

    在 System.Data.SqlClient.TdsParser.ThroweException和Warning(TdsParserStateObject stateObj)

    在System.Data.SqlClient.TdsParser.Run(RunBehavior, SqlCommand cmdHandler、SqlDataReader数据流、, BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)

    位于System.Data.SqlClient.SqlDataReader.HasMoreRows()处

    位于System.Data.SqlClient.SqlDataReader.ReadInternal(布尔值 设置超时)

    在System.Data.SqlClient.SqlDataReader.Read()处

    在 Microsoft.Data.Extensions.Materializer`1.d_ua.MoveNext()

    在 Microsoft.Data.Extensions.Materializer`1.d_u0.MoveNext()

    在 System.Linq.Enumerable.Where SelectEnumerableInterator`2.MoveNext()

    位于System.Collections.Generic.List
    1..ctor(IEnumerable
    1 收藏)

    at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)

    在Console.Export.DataProvider.ExportData(IEnumerable`1)中 D:\Documents和中的activitiesParam) 设置\USER\Desktop\11\u 16\u 2011\ITS\Console\Export\DataProvider.cs:line 44

    在D:\Documents和 设置\USER\Desktop\11\u 16\u 2011\ITS\Console\Export\DataProvider.cs:line 三十一

    在控制台中的.Export.ExportEngine.Export(IDataProvider提供程序) D:\文件和 设置\USER\Desktop\11\u 16\u 2011\ITS\Console\Export\ExportEngine.cs:line 二十五


    当你编译你的程序时,你是在调试而不是发布配置中编译它的吗?如果您执行调试构建并将文件部署到服务器,那么它将显示额外的诊断信息,在这种情况下这可能是一件好事

    • 关于调试此文件的最佳方法,我建议您做两件事: 用于捕获和处理数据库中的错误 节目
    • 将此程序与其死锁的程序进行比较。你有一个 这有时可以通过更改中的顺序来解决 哪些表在事务中被引用

    以下是有关的指南。

    可以使用Sql Profiler完成死锁的正确检查,它有一些用于此操作的事件

    但是

    它显示的并不是所有收集到的有用信息——将事件保存为xml并在xml中挖掘可以为您提供更多有关问题的信息

    您可以使用sql server将死锁的内部日志记录到自己的错误日志中。该行为由跟踪标志1222和1204控制


    通常,如果死锁语句中涉及的某个语句使用table或pk scan,那么解决死锁问题的正确索引通常是该程序在不同线程中发出多个SQL命令,还是在尝试使用SQL DB时与其他软件发生冲突?死锁实际上与缺少资源没有直接关系。简单地说:相互竞争的spid每个都有另一个的锁wants@turowicx我不相信它正在运行多个线程,但是它正在连续运行多个更新,一个接一个。啊,是的,因为它准确地告诉我哪些行失败了。我只是有点担心它实际上是在试图访问我的机器来运行。