Мы используем программу, написанную нашим крупнейшим клиентом, для приема заказов, бронирования транспорта и других операций, связанных с заказами. У нас нет другого шанса, кроме как использовать программу, а клиент очень не поддерживает, когда дело доходит до проблем с их программой. Нам просто нужно жить с программой.
Теперь эта программа в большинстве случаев работает очень медленно при использовании с двумя или более пользователями, поэтому я попытался заглянуть за занавеску и найти источник проблемы.
Я также использовал Монитор процесса для отслеживания доступа к файлам и выяснил, почему программа такая медленная: она выполняет тысячи операций чтения с mdb-файлом, даже когда программа простаивает. По сети это, конечно, очень медленно:
Трассировка монитора процессов http://img217.imageshack.us/img217/1456/screenshothw5.png
Есть ли способ отслеживать запросы, отвечающие за активность чтения? Можно ли установить флаг трассировки? Подключение JET DLL? Я предполагаю, что программа выполняет несколько дорогостоящих запросов, которые заставляют JET читать много данных в процессе.
PS: Я уже пытался разместить mdb на файловом сервере нашей компании, но добился того, что доступ к нему был даже медленнее, чем через локальный общий ресурс. Я также безуспешно пытался изменить механизмы блокировки (гибкая блокировка) на клиенте.
Я хочу знать, что происходит, и мне нужны неопровержимые факты и предложения для разработчика нашего клиента, чтобы помочь ему / ей сделать программу быстрее.

Без помощи разработчиков это невозможно. Извиняюсь.
Первый вопрос: у вас есть копия MS Access 2000 или лучше?
Если так: Когда вы говорите, что MDB «защищен паролем», вы имеете в виду, что когда вы пытаетесь открыть его с помощью MS Access, вы получаете запрос только на пароль, или он запрашивает у вас имя пользователя и пароль? (Или дать вам сообщение об ошибке, в котором говорится: «У вас нет необходимых разрешений для использования объекта foo.mdb.»?)
Если это последнее (безопасность на уровне пользователя), найдите соответствующий файл .MDW, который идет вместе с MDB. Если вы его нашли, то это «информационный файл рабочей группы», который используется в качестве «ключа» для открытия MDB. Попробуйте создать ярлык на рабочем столе с такой целью, как:
"Path to MSACCESS.EXE" "Path To foo.mdb" /wrkgrp "Path to foo.mdw"
Затем MS Access должен запросить ваше имя пользователя и пароль, которые (надеюсь) совпадают с тем, что запрашивает приложение VB6. Это, по крайней мере, позволит вам открыть файл MDB и посмотреть на структуру таблицы, чтобы увидеть, есть ли какие-либо очевидные недостатки дизайна.
Помимо этого, насколько мне известно, Эдуардо прав в том, что вам в значительной степени нужно иметь возможность запускать отладчик в исходном коде разработчика, чтобы точно узнать, что делают запросы в реальном времени ...
Не могли бы вы запустить сниффер пакетов (например, Wireshark) в сети и наблюдать за трафиком между одним пользователем и хост-машиной?
Если он использует соединение ODBC, вы можете включить для этого ведение журнала.
Чтобы ваши грязные руки точно узнали, что Access делает за кулисами запросов, есть недокументированная функция под названием JETSHOWPLAN - при включении в реестре он создает текстовый файл showplan.out. Подробности в
эта статья TechRepublicчередовать, краткое содержание здесь:
The ShowPlan option was added to Jet 3.0, and produces a text file that contains the query's plan. (ShowPlan doesn't support subqueries.) You must enable it by adding a Debug key to the registry like so:
\HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\JET.0\Engines\DebugUnder the new Debug key, add a string data type named
JETSHOWPLAN(you must use all uppercase letters). Then, add the key valueONto enable the feature. If Access has been running in the background, you must close it and relaunch it for the function to work.When ShowPlan is enabled, Jet creates a text file named
SHOWPLAN.OUT(which might end up in yourMy Documentsfolder or the current default folder, depending on the version of Jet you're using) every time Jet compiles a query. You can then view this text file for clues to how Jet is running your queries.We recommend that you disable this feature by changing the key's value to
OFFunless you're specifically using it. Jet appends the plan to an existing file and eventually, the process actually slows things down. Turn on the feature only when you need to review a specific query plan. Open the database, run the query, and then disable the feature.
Для отслеживания кошмарных проблем это непревзойденно - это то, что вы получаете в своих больших дорогих промышленных базах данных - эта функция крутая - она прекрасна и пушистая - это мой друг… ;-)
Вау, я очень надеялся получить такой ответ, и вот он :) Большое спасибо!
Хм, не уверен, что увижу там что-нибудь полезное, но попробовать стоит.