如何捕获Firebird SQL查询?

jak*_*son 0 sql firebird capture

有没有办法捕获由Delphi/C++ Builder + Firebird创建的旧应用程序传输的SQL查询?

我没有该客户端应用程序的源代码或访问(远程)数据库服务器.

Mar*_*eel 5

Firebird 2.5添加了跟踪API,可用于跟踪语句的准备和执行以及许多其他事情.Firebird中包含的用于跟踪API的工具是相当基本的,但它可能足以满足您的需求.请注意,默认情况下,跟踪API会限制捕获和记录的语句的大小,并且可能需要一些时间来调整跟踪配置以获取所需的所有信息.

示例配置是:

<database mydatabase.fdb>
    enabled                true
    log_statement_prepare  true
    time_threshold         0
    max_sql_length         65536
</database>
Run Code Online (Sandbox Code Playgroud)

这应该捕获所有语句准备与数据库中的完整SQL查询mydatabase.fdb.

有关更多信息,请参阅:Firebird 2.5中的审计和跟踪服务.

有几家供应商提供使用跟踪API的工具(例如Upscene Productions的FB Tracemanager),并且正如评论中已经提到的,IBSurgeon还有FBScanner,它充当客户端和Firebird服务器之间的代理并允许你记录流量(包括语句).