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

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

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

18
задан leeand00 14 November 2014 в 21:01
поделиться

5 ответов

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

19
ответ дан 30 November 2019 в 08:32
поделиться

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

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

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

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

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

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

2
ответ дан 30 November 2019 в 08:32
поделиться

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

1
ответ дан 30 November 2019 в 08:32
поделиться

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

Еще одна мысль - использовать Jet/ACE в качестве связанного сервера в SQL Server, а затем использовать SQL Profiler. Но это покажет вам SQL, который обрабатывал SQL Server, а не то, что обрабатывал Jet/ACE. Этого может быть достаточно для ваших целей, но я не думаю, что это будет хорошей диагностикой для Jet/ACE.

EDIT:

В комментарии автор сообщения предоставил довольно важную информацию:

Приложение, которое я пытаюсь контролировать, скомпилировано и находится у заказчика. скомпилировано и находится у клиента в помещении клиента. Я пытаюсь отследить, какие какие запросы оно пытается выполнить к MDB. Я не могу модифицировать приложение. Я пытаюсь сделать то, что SQL Profiler для SQL Server.

В этом случае, я думаю, вы можете сделать следующее:

  1. переименовать исходный MDB во что-то другое.

  2. использовать связанный сервер SQL Server для подключения к переименованному файлу MDB.

  3. создать новый MDB с именем оригинального MDB и связать его с SQL Server с помощью ODBC.

В результате получится MDB-файл, в котором есть те же таблицы, что и в оригинале, но они не локальные, а ссылки на SQL Server. В этом случае весь доступ будет осуществляться через SQL Server и может быть просмотрен с помощью SQL Profiler.

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

То, что в Jet/ACE нет протоколирования, не должно удивлять, учитывая, что нет единого серверного процесса, управляющего доступом к хранилищу данных.

2
ответ дан 30 November 2019 в 08:32
поделиться

Я бы предложил увеличить размер таблиц в 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 страницу

.
1
ответ дан 30 November 2019 в 08:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: