我有一个用 C# 开发的 Windows 服务。此服务将数据从 XML 文件导入到 SQL Server 数据库中,导入到不同的表中。这些 XML 文件很大。一个 500 MB 大小的特定文件需要 1 个多小时才能导入到具有数百万行的表中。
我有一个用 ASP.NET MVC 开发的 Web 应用程序,上面的数据库位于该应用程序的后端。此应用程序通过从该数据库的表中过滤相关记录来显示不同的报告。此应用程序还可以处理记录。
当我在 Windows 服务导入 XML 文件期间运行应用程序与数据库交互时,我的 Web 应用程序挂起并在很长一段时间后发生超时错误。
我在 Windows 服务的存储过程中使用简单的插入更新命令,并且这些存储过程中没有事务。
请告知任何解决方案以避免此问题。
最佳答案
根据我的经验,我可以提出一些建议。
首先,在单个事务中推送 500MB 的全部数据是不可取的。
然后做必要的保存点,如果所有事务都成功,最后提交。
因为长时间持有连接对象是不可取的。如果您仍然需要,可以尝试增加 sql server 超时。但这是一个糟糕的方法。
最好是拆分 xml 内容并尝试使用保存点并最终提交所有事务。
不要认为您只是在执行简单的插入或更新命令。如果您的列上有索引,那么这么多记录将花费很长时间。
确保您有正确的索引并且只有必要的索引。
如果您有任何问题,请在此处回复。您在当前代码中使用的方法是什么?
关于c# - 执行插入更新命令时从 SQL Server 搜索数据时出现超时问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42784253/