我有一个使用MSDE构建的传统VB6应用程序。
随着许多客户端数据库向MSDE 2 GB限制增长,它们将升级到SQL 2005 Express。
直到今天,这已经证明非常成功。
在整个“网络”连接SQL 2005 Express命名实例时,我花了整整一天的时间对客户端网络进行故障排除,我们的应用程序运行速度慢得令人无法接受。
我说“网络”因为它只有两台XP SP2机器 - 这里没有专用服务器。没有AD。
在尝试隔离此问题时,我已在两台计算机上安装了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诊断实用程序)在从客户端连接到服务器时运行良好。查询(甚至是大查询)按预期运行。
我确信这个问题很环保,因为我们有很多网站正在运行看起来相同的设置,没有这样的问题。
有人可以告诉我我应该做些什么来隔离这个问题,甚至提供任何可以帮助解决这个问题的线索或建议吗?
答案 0 :(得分:1)
这可能是由于缓存的查询计划不能代表数据,甚至认为您已经重建了索引并刷新了统计信息。您描述的症状(即查询从SSMS运行但从应用程序运行不正常)通常是由错误缓存的查询计划引起的。 SSMS在封面下发出“WITH RECOMPILE”。如果您正在调用存储过程,请暂时将“WITH RECOMPILE”添加到其定义中并检查结果。
答案 1 :(得分:1)
您是否尝试从其他计算机连接到“服务器”PC?会发生什么?
您是否尝试过“客户端”到另一台“服务器”机器?会发生什么?
这个问题可能只是一个平凡的网卡或电缆。
在你进一步击败你的大脑之前可能值得检查......
答案 2 :(得分:1)
制作一份清单并通过它进行系统化工作:
在此添加所有帖子的所有建议,我在下面添加一些:
等。等
答案 3 :(得分:1)
您在“曲面配置”工具中启用了哪些网络协议?你能改变连接字符串以使用(临时)硬编码的IP地址吗?