问题:
我们使用我们最大的客户编写的程序来接收订单、预订运输和做其他与订单相关的事情。我们没有其他机会,只能使用该程序,当涉及到他们的程序问题时,客户非常不支持。我们只需要接受这个程序。
现在这个程序在有两个或更多用户使用时,大部分时间都非常慢,所以我试图在幕后寻找问题的根源。
到目前为止我发现的程序的一些要点:
- 它是用 VB 6.0 编写的
- 它使用一个受密码保护的 Access-DB (Access 2000 MDB),它位于一个用户机器上的一个文件夹中。
- 该文件夹通过网络共享并由所有其他用户使用。
- 它使用 msjet40.dll 版本 4.00.9704 与访问进行通信。我猜是ADO?
我还使用Process Monitor来监视文件访问,并找出程序如此缓慢的原因:即使程序处于空闲状态,它也在对 mdb 文件执行数千次读取操作。在网络上,这当然非常慢:
进程监视器跟踪 http://img217.imageshack.us/img217/1456/screenshothw5.png
真正的问题:
有没有办法监控负责读取活动的查询?我可以设置跟踪标志吗?挂钩 JET DLL 的?我猜该程序正在执行一些昂贵的查询,导致 JET 在此过程中读取大量数据。
PS:我已经尝试将mdb放在我们公司的文件服务器上,成功访问它甚至比通过本地共享还要慢。我还尝试更改客户端上的锁定机制(机会锁定),但没有成功。
我想知道发生了什么,需要为我们客户的开发人员提供一些确凿的事实和建议,以帮助他/她更快地完成程序。