Можно ли отслеживать, что происходит с MDB доступа (то есть, какие SQL-запросы выполняются против него), так же, как использовать SQL Profiler для SQL Server?
Мне нужны журналы вызываемых актуальных запросов.
Можно ли отслеживать, что происходит с 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, а только интерфейс 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 также на английском языке) также могут быть полезны для вас.
Имейте в виду, что файл, сидящий на вашем жестком диске, - это просто файл Windows. Таким образом, существует большая разница между серверной системой и простой текстовым файлом, или файлом Power Point, или в этом случае файлом mdb, просто сидящим на диске.
Однако вы можете заставить реактивный двигатель отображать оптимизацию своего запроса с помощью showplan.
Как это сделать объясняется здесь:
В приведенной выше статье также показано, как получить доступ к статистике чтения струйного диска, которую я также считаю чрезвычайно полезной для оптимизации вещей.
Не забудьте выключить эту систему ведения журнала данных, когда вы ее не используете, поскольку она создает огромные файлы журналов...
Если вы обращаетесь к нему через 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 не существует журнала, учитывая, что ни один серверный процесс не управляет доступом к хранилищу данных.
вы можете написать свой собственный профилировщик на основе объекта транзакции, который будет централизовывать все инструкции, отправленные в базу данных. В результате вы получите где-нибудь метод "transaction.execute" и таблицу транзакций в вашем доступе db, Затем эту таблицу можно использовать для сбора инструкций транзакции, времени начала, времени окончания, отправки пользователем инструкции и т.д.
Я бы предложил увеличить таблицы до SQL Server. Существует инструмент из группы SQL Server, который лучше, чем мастер Upsizing Wizard, который включен в Access. Помощник по миграции SQL Server для доступа (доступ к SSMA)
Также см. мой Случайные мысли о расширении SQL Server с помощью советов Microsoft Access страница