SQL2005 Express从远程VB6应用程序缓慢

时间:2020-03-06 14:52:09  来源:igfitidea点击:

我有一个使用MSDE构建的旧版VB6应用程序。

随着许多客户端的数据库逐渐达到MSDE 2 GB的限制,它们已升级到SQL 2005 Express。

直到今天,这已被证明是非常成功的。

当整天通过"网络"连接SQL 2005 Express命名实例时,我整天都在对客户端网络进行故障排除,而我们的应用程序在该客户端网络上运行缓慢得令人无法接受。

我说"网络"是因为只有两台XP SP2计算机,这里没有专用服务器。没有广告。

为了解决此问题,我在两台计算机上都安装了SQL 2005 Express,并在两台计算机上都放置了数据库副本。我什至已经使用现在拥有的SQL2005 Express安装例程完全重新安装了我们的应用程序。无论是还原旧的MSDE数据库还是使用新创建的SQL 2005 Express数据库都没有关系。

当运行我们的应用程序并连接到任何一台计算机的本地服务器时,性能都很好。一旦将我们在两台PC上的应用程序连接到另一台PC上的服务器,这将变得非常缓慢。 (无论组合如何)。

现在,我重建了统计信息(exec sp_updatestats),重建了所有索引,禁用(临时)了防火墙和病毒软件,并且抓紧了无数其他稻草。

我求助于在两台计算机上运行FileMon和ProcessMon,甚至编写了一个小测试应用程序来简单地连接和查询数据库中的表。它也运行缓慢(连接大约需要5 6秒)。

当SQL Server写入日志文件(c:\ program files \ microsoft sql server \ mssql.1 \ log files \ log_12.trc)时,监视器(文件和进程)显示延迟。

但是,从客户端连接到服务器时,其他工具(例如SQL Management Studio Express甚至SSEUtil(我发现的SQL Server Express诊断实用工具)也可以完美运行。查询(甚至大型查询)会按我们期望的那样运行。

我认为这个问题是环境问题,因为我们有许多站点运行的似乎是相同的设置,而没有此类问题。

有人可以告诉我应该怎么做才能解决此问题,甚至可以提供任何有助于解决此问题的线索或者建议吗?

解决方案

这可能是由于缓存的查询计划无法代表数据,即使我们已重建索引和刷新统计信息也是如此。我们描述的症状(即查询可以从SSMS正常运行,但不能从应用程序正常运行)通常是由错误地缓存了查询计划引起的。 SSMS在封面下发出" WITH RECOMPILE"。如果要调用存储过程,请在其定义中临时添加" WITH RECOMPILE"并检查结果。

我们是否尝试过从另一台计算机连接到"服务器" PC?怎么了?

我们是否尝试过将"客户端"连接到另一台"服务器"计算机?怎么了?

这个问题可能只是像普通的网卡或者电缆那样平凡的事情。

在我们进一步动动脑筋之前,可能值得检查一下...

制作清单并系统地进行检查:

在此处添加所有帖子的所有建议,并在下面添加一些建议:

  • 网线
  • 网络速度
  • 整理硬盘碎片
  • 没有网络错误-执行ping并查找丢失的数据包
  • 每台机器的内存
  • 处理器
  • 病毒

等等等,

在"表面配置"工具中启用了哪些网络协议?我们可以更改连接字符串以使用(临时)硬编码的IP地址吗?