簡體   English   中英

Microsoft JET SQL查詢日志記錄或“如何調試客戶的程序?”

[英]Microsoft JET SQL Query Logging or “How do I debug my customer's program?”

問題:

我們使用由我們最大的客戶編寫的程序來接收訂單,預訂運輸和其他與訂單相關的東西。 我們沒有其他機會,只能使用該程序,並且當涉及到他們的程序問題時,客戶是非常不支持的。 我們只需要接受該計划。

現在這個程序在與兩個或更多用戶一起使用時大部分時間都非常慢,所以我試着看看窗簾后面找到問題的根源。

關於我到目前為止發現的程序的一些觀點:

  • 它是用VB 6.0編寫的
  • 它使用受密碼保護的Access-DB(Access 2000 MDB),該文件位於一個用戶計算機上的文件夾中。
  • 該文件夾通過網絡共享,並由所有其他用戶使用。
  • 它使用msjet40.dll版本4.00.9704與訪問進行通信。 我想這是ADO?

我還使用Process Monitor監視文件訪問,並找出程序速度如此之慢的原因:它在mdb文件上進行了數千次讀取操作,即使程序空閑也是如此。 通過網絡,這當然非常緩慢:

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

真正的問題:

有沒有辦法監視負責讀取活動的查詢? 我可以設置跟蹤標志嗎? 掛鈎JET DLL的? 我想這個程序正在做一些昂貴的查詢,導致JET在這個過程中讀取大量數據。

PS:我已經嘗試將mdb放在我們公司的文件服務器上,成功訪問它甚至比本地共享更慢。 我也嘗試在客戶端上更改鎖定機制(機會鎖定)但沒有成功。

我想知道發生了什么,需要一些有關我們客戶開發人員的事實和建議,以幫助他/她更快地完成程序。

為了讓你的貪婪掌握正是Access正在查詢的幕后操作,有一個名為JETSHOWPLAN的未記錄的功能 - 當在注冊表中打開時,它會創建一個showplan.out文本文件。 詳細信息在此TechRepublic文章 備用中 ,在匯總:

ShowPlan選項已添加到Jet 3.0,並生成包含查詢計划的文本文件。 (ShowPlan不支持子查詢。)您必須通過向注冊表添加Debug鍵來啟用它,如下所示:

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

在新的Debug鍵下,添加名為JETSHOWPLAN的字符串數據類型(必須使用全部大寫字母)。 然后,將鍵值ON添加以啟用該功能。 如果Access已在后台運行,則必須將其關閉並重新啟動才能使該功能正常工作。

啟用S​​howPlan時,Jet會在每次Jet編譯查詢時創建一個名為SHOWPLAN.OUT的文本文件(最終可能會出現在“ My Documents文件夾或當前默認文件夾中,具體取決於您使用的Jet版本)。 然后,您可以查看此文本文件,以獲取有關Jet如何運行查詢的線索。

我們建議您通過將密鑰值更改為OFF來禁用此功能,除非您專門使用它。 Jet將計划附加到現有文件,最終,該過程實際上減慢了速度。 僅在需要查看特定查詢計划時才啟用該功能。 打開數據庫,運行查詢,然后禁用該功能。

為了追蹤噩夢問題,這是無與倫比的 - 這是你在昂貴的大型工業數據庫上得到的東西 - 這個功能很酷 - 它很可愛又蓬松 - 這是我的朋友...... ;-)

您是否可以在網絡上拋出數據包嗅探器(如Wireshark)並觀察一個用戶與主機之間的流量?

如果它使用ODBC連接,則可以為其啟用日志記錄。

  1. 啟動ODBC數據源管理器。
  2. 選擇“跟蹤”選項卡
  3. 選擇“立即開始跟蹤”按鈕。
  4. 選擇應用或確定。
  5. 運行應用程序一段時間。
  6. 返回ODBC管理員。
  7. 選擇“跟蹤”選項卡。
  8. 選擇“立即停止跟蹤”按鈕。
  9. 可以在最初在“日志文件路徑”框中指定的位置查看跟蹤。

第一個問題:您是否擁有MS Access 2000或更好的副本?

如果是這樣:當你說MDB是“密碼保護”時,你的意思是當你嘗試使用MS Access打開它時,你會得到一個密碼提示,或者是否提示你輸入用戶名和密碼? (或者給你一條錯誤消息,說“你沒有必要的權限來使用foo.mdb對象。”?)

如果是后者(用戶級安全性),請查找與MDB一起使用的相應.MDW文件。 如果找到它,這是“工作組信息文件”,用作打開MDB的“鍵”。 嘗試使用以下目標創建桌面快捷方式:

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

然后,MS Access會提示您輸入用戶名和密碼(希望)與VB6應用程序要求的相同。 這至少允許您打開MDB文件並查看表結構以查看是否存在任何明顯的設計缺陷。

除此之外,據我所知,Eduardo是正確的,您幾乎需要能夠在開發人員的源代碼上運行調試器,以確切了解實時查詢正在做什么......

沒有開發人員的幫助是不可能的。 抱歉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM