实体框架只是在INSERT期间超时停止
我有一个小型的c#应用程序,它使用Entitiy Framework 6将文本文件解析为某些数据库结构。实体框架只是在INSERT期间超时停止
在一般的文件内容被解析成3个表:
Table1 --(1-n)-- Table2 --(1-n)-- Table3
应用工作了几个月没有在开发,阶段和生产环境的任何问题。
上周它停止在舞台上,现在我试图找出原因。
一个文件包含〜100个条目表1,〜2000个条目表2,〜2000米的条目表3
.SaveChanges()
每个文件之后被调用。
我得到以下超时异常:
超时过期。操作完成之前超时的时间或服务器没有响应。该语句已终止。
AutoDetectChangesEnabled
设置为false。
因为有4台是我执行一个更新语句中的每个文件后,出现了约于整个事情交易,所以我删除了第4台和交易的东西,但问题仍然存在。
为了测试它只是一个性能问题,我设置Database.CommandTimeout = 120无任何影响,它仍然运行到超时2分钟后。
(问题一个文件被存储在约5秒,这是绝对OK之前)
如果我看使用SQL Server Profiler的SQL服务器,我可以看到被称为.SaveChanges()
后如下:
SQL Server Profiler 只有前几个INSERT
报表Table3
显示(总第4-15报表和.SaveChanges()
后不久,所有的)
之后:没有新的条目,直到超时OC小人。
我完全不知道检查什么,因为没有错误或类似的代码的东西。
如果我看的SQL Server,也绝对没有理由要推迟查询或类似的东西(CPU,内存和磁盘空间都OK)。
会很高兴为这个每个评论,如果您想了解更多的相关信息,请让我知道。
最好的问候
通过重建Table1中的碎片索引来修复它。
下面的文章是有助于了解如何利用碎片索引的护理:
https://solutioncenter.apexsql.com/why-when-and-how-to-rebuild-and-reorganize-sql-server-indexes/
(如果有的国防部仍然认为这是没有有效的答案,任何的解释将是巨大的)
有一天,我发布这个问题已经过去了一个星期。几天后它又回来了。 有点令人沮丧,因为它来来去去,仍然不知道可能会导致这种行为。 –