2015-05-14 1 views
1

Есть ли способ захватить SQL-запросы, переданные старым приложением , созданные в Delphi/C++ Builder + Firebird?Как записывать SQL-запросы Firebird?

У меня нет исходного кода этого клиентского приложения или доступа к (удаленному) серверу базы данных.

+0

Самое близкое, что я видел, это [FBScanner] (https://www.ibphoenix.com/products/software/fbscanner), который является прокси-сервером, который регистрирует трафик. – nater

ответ

5

Firebird 2.5 добавил trace API, который может использоваться для отслеживания подготовки и выполнения заявлений и ряда других вещей. Инструменты, включенные в Firebird для использования API трассировки, довольно просты, но, возможно, этого вполне достаточно для ваших нужд. Имейте в виду, что по умолчанию API-интерфейс трассировки ограничивает размер заявлений, записанных и зарегистрированных, и может потребоваться некоторое время, чтобы настроить конфигурацию трассировки, чтобы получить всю необходимую информацию.

Пример конфигурации:

<database mydatabase.fdb> 
    enabled    true 
    log_statement_prepare true 
    time_threshold   0 
    max_sql_length   65536 
</database> 

Это должно захватить все заявление готовится с полным запросом SQL в базе данных mydatabase.fdb.

См. Дополнительную информацию: Audit and Trace Services in Firebird 2.5.

Есть несколько производителей, которые предоставляют инструменты, которые используют трассировки API (например FB Tracemanager по Upscene Productions), и, как уже упоминалось в комментариях, есть также FBScanner по IBSurgeon, который выступает в качестве посредника между клиент и сервер Firebird и позволяет записывать трафик (включая операторы).

Смежные вопросы