Действительно ли возможно контролировать то, что происходит с Доступом MDB (т.е. какие SQL-запросы выполняются против него), таким же образом поскольку Вы использовали бы SQL Profiler для SQL Server?
Мне нужны журналы фактических называемых запросов.
Ответ зависит от технологии, используемой клиентом, который использует MDB. Существуют различные параметры трассировки, которые можно настроить в HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Jet \ 4.0 \ Engines \ ODBC http://office.microsoft.com/en-us/access/HP010321641033.aspx . Если вы используете OLEDB для доступа к MDB из SQL Server, вы можете использовать DBCC TRACEON (см. http://msdn.microsoft.com/en-us/library/ms187329.aspx ). Я могу продолжить, но прежде всего вы должны точно определить, какой интерфейс вы используете для доступа к MDB.
MDB - это файл без каких-либо активных компонентов, поэтому трассировка может делать не сам MDB, а только интерфейс БД.
ОБНОВЛЕНО : поскольку вы используете DAO (Jet Engine) и OLE DB из VB, я рекомендую вам создать ключ регистрации JETSHOWPLAN со значением «ON» в разделе HKEY_LOCAL_MACHINE \ SOFTWARE \ MICROSOFT \ JET \ 4.0 \ Engines \ Debug (Debug (Debug подключ, который вам нужно создать). Этот ключ описан, например, в https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5064388.html , http. : //msdn.microsoft.com/en-us/library/aa188211%28office.10%29.aspx и соответствует http://support.microsoft.com / kb / 252883 / en разрешить трассировку запросов OLE DB. Если этого вывода вам будет недостаточно, вы можете дополнительно использовать TraceSQLMode и TraceODBCAPI из HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Jet \ 4.0 \ Engines \ ODBC. В моей практике JETSHOWPLAN дает мне прекрасную информацию. См. Также SHOWPLAN commend.
ОБНОВЛЕНО 2 : для более поздних версий Access (например, Access 2007) используйте такой ключ, как HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Office \ 12.0 \ Access Connectivity Engine \ Engines
. Инструмент ShowplanCapturer (см. http://www.mosstools.de/index.php?option=com_content&view=article&id=54&Item%20%20id=57 , для загрузки http: // www. mosstools.de/download/showplan_v9.zip также на английском языке) также может быть вам полезен.
Имейте в виду что файл, находящийся на вашем жестком диске, - это просто файл Windows. Итак, существует большая разница между серверной системой и системой простого текстового файла, или файла Power Point, или, в данном случае, файла mdb, который просто находится на диске.
Однако вы можете заставить реактивный двигатель отображать оптимизацию запросов через showplan.
Как это сделать, объясняется здесь:
Вышеупомянутая статья также показывает, как получить доступ к статистике чтения реактивного диска, что я также считаю чрезвычайно полезным для оптимизации.
Просто не забывайте выключать эту систему журналов обработки данных, когда вы ее не используете, поскольку она создает огромные файлы журналов…
вы можете написать свой собственный профилировщик на основе объекта «транзакция», который будет централизовать все инструкции, отправленные в базу данных. "transaction.execute" и таблица транзакций в вашей базе данных доступа. Затем эту таблицу можно использовать для сбора инструкций транзакции, времени начала, времени окончания, пользователя, отправившего инструкцию, и т. Д.
Если вы обращаетесь к нему через ODBC, вы можете включить логирование ODBC. Однако это сильно замедлит работу. И это не будет работать для любого другого интерфейса данных.
Еще одна мысль - использовать Jet/ACE в качестве связанного сервера в SQL Server, а затем использовать SQL Profiler. Но это покажет вам SQL, который обрабатывал SQL Server, а не то, что обрабатывал Jet/ACE. Этого может быть достаточно для ваших целей, но я не думаю, что это будет хорошей диагностикой для Jet/ACE.
EDIT:
В комментарии автор сообщения предоставил довольно важную информацию:
Приложение, которое я пытаюсь контролировать, скомпилировано и находится у заказчика. скомпилировано и находится у клиента в помещении клиента. Я пытаюсь отследить, какие какие запросы оно пытается выполнить к MDB. Я не могу модифицировать приложение. Я пытаюсь сделать то, что SQL Profiler для SQL Server.
В этом случае, я думаю, вы можете сделать следующее:
переименовать исходный MDB во что-то другое.
использовать связанный сервер SQL Server для подключения к переименованному файлу MDB.
создать новый MDB с именем оригинального MDB и связать его с SQL Server с помощью ODBC.
В результате получится MDB-файл, в котором есть те же таблицы, что и в оригинале, но они не локальные, а ссылки на SQL Server. В этом случае весь доступ будет осуществляться через SQL Server и может быть просмотрен с помощью SQL Profiler.
Я понятия не имею, как это повлияет на производительность, и не нарушит ли это извлечение данных в исходном приложении. Если это приложение использует наборы записей табличного типа или SEEK, то да, оно сломается. Но это единственный способ, который я вижу, чтобы получить логирование.
То, что в Jet/ACE нет протоколирования, не должно удивлять, учитывая, что нет единого серверного процесса, управляющего доступом к хранилищу данных.
Я бы предложил увеличить размер таблиц в SQL Server. Есть инструмент из группы SQL Server, который лучше, чем Upsizing Wizard, входящий в состав Access. SQL Server Migration Assistant for Access (SSMA Access)
Также смотрите мою Random Thoughts on SQL Server Upsizing from Microsoft Access Tips страницу
.