Подтвердить что ты не робот

Возможно ли отслеживать и регистрировать актуальные запросы, сделанные против MDB доступа?

Можно ли отслеживать, что происходит с MDB доступа (то есть, какие SQL-запросы выполняются против него), так же, как использовать SQL Profiler для SQL Server?

Мне нужны журналы вызываемых актуальных запросов.

4b9b3361

Ответ 1

Ответ зависит от технологии, используемой от клиента, использующего 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, а только интерфейс DB.

ОБНОВЛЕНО. Потому что использовать DAO (Jet Engine) и OLE DB из VB, я рекомендую вам создать ключ реестра JETSHOWPLAN со значением "ON" в разделе HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\JET\4.0\Двигатели\Debug (Debug subkey, который вы должны создать). Этот ключ, описанный, например, в 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 также на английском языке) также могут быть полезны для вас.

Ответ 2

Имейте в виду, что файл, сидящий на вашем жестком диске, - это просто файл Windows. Таким образом, существует большая разница между серверной системой и простой текстовым файлом, или файлом Power Point, или в этом случае файлом mdb, просто сидящим на диске.

Однако вы можете заставить реактивный двигатель отображать оптимизацию своего запроса с помощью showplan.

Как это сделать объясняется здесь:

http://www.databasejournal.com/features/msaccess/article.php/3658041/Queries-On-Steroids--Part-IV.htm

В приведенной выше статье также показано, как получить доступ к статистике чтения струйного диска, которую я также считаю чрезвычайно полезной для оптимизации вещей.

Не забудьте выключить эту систему ведения журнала данных, когда вы ее не используете, поскольку она создает огромные файлы журналов...

Ответ 3

Если вы обращаетесь к нему через 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 не существует журнала, учитывая, что ни один серверный процесс не управляет доступом к хранилищу данных.

Ответ 4

вы можете написать свой собственный профилировщик на основе объекта транзакции, который будет централизовывать все инструкции, отправленные в базу данных. В результате вы получите где-нибудь метод "transaction.execute" и таблицу транзакций в вашем доступе db, Затем эту таблицу можно использовать для сбора инструкций транзакции, времени начала, времени окончания, отправки пользователем инструкции и т.д.

Ответ 5

Я бы предложил увеличить таблицы до SQL Server. Существует инструмент из группы SQL Server, который лучше, чем мастер Upsizing Wizard, который включен в Access. Помощник по миграции SQL Server для доступа (доступ к SSMA)

Также см. мой Случайные мысли о расширении SQL Server с помощью советов Microsoft Access страница