Как отследить, в какие таблицы база данных записывает данные?
Я использую "Lexware Warenwirtschaft Premium 2014" (известное программное обеспечение для управления товарами в Германии). Он использует Sybase в качестве базы данных. Я подключаюсь к базе данных, используя соединение ODBC (драйвер SQL Anywhere). База данных насчитывает более 800 таблиц. Например, когда Lexware создает новую статью, она записывает данные в разные таблицы.
Есть ли способ отследить, в какие таблицы Lexware записывает данные?
2 ответа
В качестве специальной меры вы можете включить трассировку ODBC, а затем просмотреть содержимое.
http://support.microsoft.com/kb/274551 рассказывает, как это сделать с помощью клиента Windows, и вы можете найти аналогичную информацию для Linux/Unix и других клиентов.
Затем вам нужно будет проанализировать файл трассировки, чтобы увидеть, в какие запросы были вставлены. Первым шагом, вероятно, будет изоляция всех операторов SQLPrepare и SQLExecDirect и проверка их на наличие INSERT, UPDATE и других соответствующих операторов Sybase.
Обратите внимание, что это не то, что вы хотели бы использовать в качестве постоянного решения, а просто способ узнать, что делает клиент ODBC, если у вас нет доступа, например, к регистрации информации в самой базе данных. Однако трассировка замедляет выполнение и создаст очень большой файл трассировки, если вы оставите его запущенным в течение какого-либо значительного периода.
Я так не думаю. Все, что эта программа делает за интерфейсом, скрыто в ее двоичных файлах и нечитаемо для людей, поэтому вы не можете прочитать код, чтобы увидеть, какие таблицы изменены.
Вы можете выяснить, какая таблица была отредактирована последней, в зависимости от SQL-сервера и его версии.