Sql server 使用COM对象的经典ASP页面速度非常慢

Sql server 使用COM对象的经典ASP页面速度非常慢,sql-server,iis,asp-classic,com+,Sql Server,Iis,Asp Classic,Com+,首先,我想说的是,这个问题的一些细节可能有点模糊,因为它涉及到商业代码,我显然不能在这里透露。但不管怎么说,还是这样 我目前正在处理一个基于.Net的web应用程序,该应用程序在某些领域也有经典ASP页面-该应用程序有一个后端MSSQL数据库。应用程序经典ASP区域的数据访问由添加到IIS服务器组件服务中的32位DLL处理。应用程序最近已更改,因此所有组件(IIS身份验证、.Net应用程序池和添加到组件服务的数据访问DLL)现在都在单个Windows帐户下运行 我最近发现的问题是,尽管对数据库的

首先,我想说的是,这个问题的一些细节可能有点模糊,因为它涉及到商业代码,我显然不能在这里透露。但不管怎么说,还是这样

我目前正在处理一个基于.Net的web应用程序,该应用程序在某些领域也有经典ASP页面-该应用程序有一个后端MSSQL数据库。应用程序经典ASP区域的数据访问由添加到IIS服务器组件服务中的32位DLL处理。应用程序最近已更改,因此所有组件(IIS身份验证、.Net应用程序池和添加到组件服务的数据访问DLL)现在都在单个Windows帐户下运行

我最近发现的问题是,尽管对数据库的.Net数据访问以完全正常的速度运行,但通过COM+组件进行的经典ASP数据访问速度非常慢。不幸的是,这似乎并没有在任何地方抛出任何错误,无论是在IIS日志中还是在事件查看器中

COM+组件以标准方式实例化,这是在一个包含文件中完成的,该文件在任何需要数据访问的ASP页面上引用,例如

var objDataProvider = Server.CreateObject("DataAccess.DataProvider");
ASP页面然后使用COM+中的方法执行查询,例如

objDataProvider.Query(...)
objDataProvider.Exec(...)
我已经在IIS中为任何需要20秒以上处理的ASP页面启用了失败请求跟踪,并且可以看到大多数调用都处理记录集,如下面的示例所示

if(rsri.EOF)

以上两个示例都需要9秒以上的时间运行。对在后台运行的SQL进行分析表明,该SQL在几毫秒内运行,这表明问题在于COM+将数据返回给ASP,或者ASP处理数据的速度较慢

  • Windows Server 2008 R2 SP1(64位)
  • 英特尔至强CPU
  • 2GB内存

以前是否有人经历过类似的情况,或者能够为我指出进一步诊断的方向,这可能会有所帮助?

您需要自己深入了解。我以前使用过Ants性能分析器来提高.Net应用程序的性能。它似乎也可以评测COM+


这个或其他类似的分析工具是我看到的解决问题的唯一选择。

经过几天的努力,我终于找到了答案,这是通过回到基础解决的最简单的问题


承载应用程序的web服务器位于DMZ中,需要SQL server的主机文件条目。一旦添加了这一点,应用程序又开始运行了。

我也遇到了同样的问题。我已将iis服务器从W2003-SQL express 2005迁移到W2012R2-SQL server 2014 express,asp脚本的速度慢了两倍。 内部的sql查询以相同或更好的速度执行,我在本地测试了服务器,以避免出现问题。我认为这可能是一个dns问题

您在主机文件中做了什么更改?您使用了什么样的sql字符串连接或连接类型?
谢谢

您使用SQL Profiler查看对数据库执行的查询了吗?我已经-如问题中所述,SQL查询在几毫秒内运行并返回预期数据。在某些情况下,这是一行数据,然后通过引用集合中的第一条记录在ASP代码中进行处理,即返回=rsData(0)我只是添加了一个包含数据库服务器的DNS名称和IP地址的条目。例如,
192.168.0.1 SERVERNAME.DOMAIN.LOCAL
theReturn = rsData(0);