代码之家  ›  专栏  ›  技术社区  ›  VVS

Microsoft JET SQL查询日志记录或“如何调试客户的程序?”

  •  3
  • VVS  · 技术社区  · 17 年前

    问题是:

    我们使用一个由我们最大的客户编写的程序来接收订单、预订运输和做其他与订单相关的事情。我们没有其他机会,只能使用该程序,而客户在遇到程序问题时非常不支持。我们只能接受这个节目。

    现在这个程序在两个或更多用户使用时,大多数时候都非常慢,所以我试着从幕后寻找问题的根源。

    到目前为止,我发现了关于该计划的一些要点:

    • 它是用VB6.0编写的
    • 它使用密码保护的Access DB(Access 2000 MDB),该数据库位于一个用户计算机上的文件夹中。
    • 该文件夹通过网络共享,并由所有其他用户使用。
    • 它使用msjet40.dll版本4.00.9704与access通信。我猜这是胡闹?

    我也用过 Process Monitor

    Process Monitor Trace http://img217.imageshack.us/img217/1456/screenshothw5.png

    真正的问题是:

    有没有办法监视负责读取活动的查询?我可以设置跟踪标志吗?挂上喷气式飞机的DLL?我猜该程序正在执行一些昂贵的查询,导致JET在这个过程中读取大量数据。

    PS:我已经尝试将mdb放在我们公司的文件服务器上,成功地实现了访问mdb的速度甚至比访问本地共享还要慢。我还尝试在客户机上更改锁定机制(机会主义锁定),但没有成功。

    我想知道发生了什么,需要一些事实和建议给我们客户的开发人员,以帮助他/她更快地完成程序。

    5 回复  |  直到 17 年前
        1
  •  8
  •   StayOnTarget Charlie Flowers    7 年前

    为了让你的脏手确切地了解Access在幕后做什么,在查询方面有一个未记录的特性,叫做JETSHOWPLAN——当在注册表中打开时,它会创建一个 showplan.out 文本文件。详情见 this TechRepublic article alternate ,总结如下:

    ShowPlan选项已添加到Jet 3.0中,并生成一个文本文件 它包含查询的计划。(ShowPlan不支持子查询。) 您必须通过向注册表添加调试项来启用它,如下所示:

    \\HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\JET\4.0\Engines\Debug
    

    在newdebug键下,添加一个名为 JETSHOWPLAN (必须使用所有大写字母)。然后,添加键值 ON 到 启用该功能。如果Access一直在后台运行,则 必须关闭它并重新启动它才能使功能正常工作。

    启用ShowPlan后,Jet将创建一个名为 SHOWPLAN.OUT (这可能会在你的 My Documents 文件夹或当前文件夹 默认文件夹,取决于您正在使用的Jet版本)每个

    OFF 除非你特别使用它。喷气式飞机把这项计划附加在 一个现有的文件,最终,这个过程实际上会减慢速度 查询计划。打开数据库,运行查询,然后禁用

    为了追踪噩梦般的问题,它是无与伦比的——这是你在昂贵的大型工业数据库中得到的东西——这个功能很酷——它可爱而蓬松——它是我的朋友;-)

        2
  •  1
  •   BIBD    17 年前

    你能不能在网络上抛出一个数据包嗅探器(比如Wireshark)并监视一个用户和主机之间的通信量?

        3
  •  1
  •   DJ.    17 年前

    如果它使用ODBC连接,则可以为此启用日志记录。

    1. 启动ODBC数据源管理器。
    2. 选择跟踪选项卡
    3. 选择“立即开始跟踪”按钮。
    4. 运行应用程序一段时间。
    5. 返回到ODBC管理员。
    6. 选择“立即停止跟踪”按钮。
    7. 可以在最初在“日志文件路径”框中指定的位置查看跟踪。
        4
  •  0
  •   Tim Lara    17 年前

    第一个问题:您是否有MS Access 2000或更高版本的副本?

    当您说MDB受“密码保护”时,您的意思是当您尝试使用MS Access打开MDB时,只会提示您输入密码,还是会提示您输入用户名和密码?(或者给您一条错误消息,提示“您没有使用foo.mdb对象所需的权限。”?)

    "Path to MSACCESS.EXE" "Path To foo.mdb" /wrkgrp "Path to foo.mdw"
    

    然后,MS Access会提示您输入用户名和密码,希望与VB6应用程序要求的相同。这至少允许您打开MDB文件并查看表结构,以查看是否存在任何明显的设计缺陷。

        5
  •  -1
  •   Eduardo Molteni    17 年前

    没有开发者的帮助是不可能的。很抱歉

    推荐文章