为什么DataAdapter.Fill()使用SQL-Server-2014比使用SQL-Server-2000慢

时间:2014-10-16 18:32:09

标签: asp.net sql-server vb.net sql-server-2000 sql-server-2014

我正在替换用ASP.NET 1.0编写的遗留Web应用程序。我的计划是在现有数据库模式的基础上使用MVC5重建新的GUI。作为该过程的一部分,我将整个数据库从SQL-Server 2000迁移到SQL-Server 2014,并将相同的Web实例指向新的DB服务器。

虽然新服务器上的查询运行速度更快,但数据库升级导致我们的网站速度变慢。我追溯到“DataAdapter.Fill()”调用的缓慢。连接到SQL-Server 2014时,使用旧数据库服务器从Web应用程序调用大约需要10秒而不是3秒(大约慢3倍)。潜在的sproc非常快,所以这不是瓶颈。

新的数据库服务器位于同一网络上,因此延迟不应成为问题。 Web服务器可以在不到10毫秒的时间内ping旧服务器和数据库服务器。

任何想法为什么数据库升级会导致如此剧烈的放缓?

1 个答案:

答案 0 :(得分:0)

好的,问题解决了。缓慢不是在加载DataAdapter,而是在对数据库的世俗调用中。从ADO.NET调用数据库时,默认情况下,即使SSMS将其打开,默认情况下ARITHABORT也会关闭。很难捕捉,因为即使我尝试通过调用“SET ARITHABORT OFF”禁用SSMS中的默认ARITHABORT设置,它也没有效果(不确定原因)。

我通过将“SET ARITHABORT ON”添加到由我的应用程序调用时运行缓慢的sproc的开头解决了这个问题。可以为整个数据库启用此功能,但有一些risks associated with doing that

我发现this非常有用。