![]() |
|
![]() ![]() ![]() |
|
VihaVik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 17.9.2007 Репутация: нет Всего: 1 |
Подскажите как возможно логировать запросы посылаемые на сервер MS Jet.Ole.Db от DataSet-a.
|
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 22 Всего: 122 |
что имеется ввиду под логирование... объясни по подробнее...
Это сообщение отредактировал(а) Rodman - 17.11.2007, 23:35 |
|||
|
||||
VihaVik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 17.9.2007 Репутация: нет Всего: 1 |
При изменении записи, удалении записи и т.д. TADODataSet посылает команды СКЛ на сервер базы данных. Вот эти команды мне и надо перехватить (Просто записать в лог файл для дальнейшего анализа). Как логировать запросы на выборку я знаю, а вот как перехватить команды по изменению данных я найти не могу. Вот в этом и вопрос. Может кто-то сталкивался с этим?
|
|||
|
||||
pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 16 Всего: 40 |
как? какие условия? прога работает сама по себе и надо перехватывать другой прогой? или ты находишься в этой проге что посылает запросы? тогда:
но видимо я не допонял -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
VihaVik |
|
||||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 17.9.2007 Репутация: нет Всего: 1 |
pseud,
Данный код записывает команды выборки которые идут через ADOConnection в СтрингЛист, а затем, при закрытии ДатаМодуля я сохраняю весь лог втекстовый файл.
получается в файле запись select Id_Zakaz, Nomer_Zakaz, Date_Zakaz, Zakazchik, Data_Vidachi_Zakaz from Zakazi select * from Zakazchiki select * from Zakazi where Id_Zakaz = 11 select * from Works select * from Zakazchiki Но мне нужно записывать не только команды выборки (SELECT), но и комманды изменения удаления записей, т.е. INSERT, DELETE, UPDATE. Так что если кто сталкивался с этим, то подскажите, где можно эти команды перехватить? |
||||
|
|||||
pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 16 Всего: 40 |
читаем help
помоему все понятно, этот метод перехватывает все Execute, а значит все SELECT, INSERT, UPDATE, DELETE и т.д. Добавлено через 2 минуты и 22 секунды а еще он возвращает RecordsAffected и мы можем залогировать сколько строк было удалено или изменено а еще он возвращает Error и мы можем залогировать что за ошибка произошла при выполнении нашего Execute вобщем ![]() -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
VihaVik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 17.9.2007 Репутация: нет Всего: 1 |
Этот метод перехватывает только Execute используемые в свойстве CommandText элементов ADO (TADOCommand, TADODataSet, TADOQuery, TADOTable...). По крайней мере в лог заносятся только комманды которые непосредственно устанавливаются в этом свойстве. Мне же необходимо перехватить комманды которые посылаются при связке DBGrid-DataSource-ADODataset-ADOConnection. Т.Е. при изменении в гриде записей, удалении их и т.д. По ентому и интересует такой вопрос где в каком месте происходит перевод комманд в СКЛ и посылка их на сервер базы данных? И естественно в каком месте мне их перехватить? |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
а может лучше всего на сервере делать логирование?
|
|||
|
||||
VihaVik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 17.9.2007 Репутация: нет Всего: 1 |
Скорее всего это и будет решением. В любом случае если нарою решение то сообщю. А пока всем спасибо за ответы. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Я не знаю, как с событиями в M$ SQL, просто в огнептице есть удобное средство, называемое треггерами
|
|||
|
||||
VihaVik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 17.9.2007 Репутация: нет Всего: 1 |
Про МС СКЛ не скажу. База у меня под Аксесс. (Под ФБ переделывать ее нет смысла (не те деньги), по крайней мере не на данном этапе, база не моя и программа управления данными тоже не моя). Механизм репликации мне не подходит. Пользователи работают с отключенным набором данных, т.е. с файлами ADTG. Приносят на серверный комп данные. Программа делает публикацию в базе данных с помощью UpdateBatch. Т.е. не мной реализованная и выполненная модель Briefcase. И в этот момент возникает ошибка обновления. Документации по программе - кот наплакал - ни нормальных исходников, ни-че-го... Мне нужно сейчас проконтролировать процесс ввода данных удаленными пользователями, записать их изменения в лог. И попытаться определить где возникает ошибка. Потому что сама программа пишет - ошибка обновления и усе. У меня покрайней мере есть нормальные исходники удаленного клиента, вот в нем я и хочу запостить логер.
Ну надеюсь я ситуацию в кратце описал. Под ФБ конечно с этим делом былобы намного легче, но...... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |