代码之家  ›  专栏  ›  技术社区  ›  Stuart Helwig

远程vb6应用程序的sql2005 express slow

  •  1
  • Stuart Helwig  · 技术社区  · 18 年前

    我有一个使用msde构建的旧的vb6应用程序。

    随着许多客户机的数据库增长到msde 2 GB的限制,它们将升级到SQL 2005 Express。

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

    我花了一整天的时间来诊断一个客户机网络,在这个网络上,当通过“网络”连接一个名为SQL2005 Express的实例时,我们的应用程序运行得异常缓慢。

    我之所以说“网络”,是因为它只有两台xp sp2机器——这里没有专用服务器。没有广告。

    在试图隔离此问题时,我在两台计算机上都安装了SQL 2005 Express,并在两台计算机上放置了数据库的副本。我甚至使用现在的sql2005-express安装程序完全重新安装了我们的应用程序。无论是恢复旧的MSDE数据库还是使用新创建的SQL2005 Express数据库,都没有什么区别。

    当运行我们的应用程序并连接到任何一台机器的本地服务器时,性能都很好。一旦你将我们的应用程序连接到另一台电脑上的服务器上,速度就很慢。(无论组合如何)。

    现在,我已经重建了统计数据(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诊断实用工具)在从客户机连接到服务器时都能正常运行。查询(甚至是大型查询)按预期运行。

    我相信这个问题是环境问题,因为我们有这么多的网站在运行,似乎是相同的设置,没有这样的问题。

    有人能告诉我应该做什么来隔离这个问题,甚至提供任何线索或建议来帮助解决这个问题吗?

    4 回复  |  直到 16 年前
        1
  •  1
  •   Johan Bresler    18 年前

    制定一份检查表并系统地进行检查:

    在这里添加所有帖子的所有建议,在下面添加一些建议:

    1. 网络电缆
    2. 网络速度
    3. 碎片整理硬盘
    4. 无网络错误-执行ping并查找丢失的数据包
    5. 每台机器内存
    6. 处理器
    7. 病毒类

    等

        2
  •  1
  •   Mitch Wheat    18 年前

    这可能是由于缓存的查询计划不代表数据,甚至认为您已经重建了索引和刷新了统计信息。您描述的症状(即查询在SSMS中运行良好,而不是在应用程序中运行)通常是由错误缓存的查询计划引起的。SSMS在封面下发出“with recompile”。如果要调用存储过程,请临时将“with recompile”添加到其定义中并检查结果。

        3
  •  1
  •   Mike Woodhouse    18 年前

    您是否尝试从另一台计算机连接到“服务器”PC?发生什么事了?

    你试过把“客户机”换成另一台“服务器”机器吗?发生什么事了?

    这个问题可能只是一个普通的问题,比如一个片状的网卡或电缆。

    在你进一步绞尽脑汁之前可能值得检查一下…

        4
  •  1
  •   robsoft    18 年前

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

    推荐文章