Возможно ли отслеживать и регистрировать актуальные запросы, сделанные против MDB доступа?
Можно ли отслеживать, что происходит с MDB доступа (то есть, какие SQL-запросы выполняются против него), так же, как использовать SQL Profiler для SQL Server?
Мне нужны журналы вызываемых актуальных запросов.
Ответы
Ответ 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 страница