我想知道是否可以使用 Wireshark 将整个查询记录到 Firebird 3.0 数据库服务器。我能够记录一些通信,但我看到带有问题标签而不是值的查询。
从 SP_procedure_name(?,?,?) 中选择 *
我没有看到任何可以传输这些值的数据包。这是某种类型的数据库通信加密吗?有什么方法可以禁用它并查看提供的确切值吗?
最佳答案
在 Firebird 有线协议(protocol)中,分配一个语句句柄 (op_allocate_statement
),在该句柄上准备一条语句 (op_prepare_statement
),然后您可以多次执行该语句绑定(bind)参数的不同值集 (op_execute
/op_execute2
) 的时间。
因此,您在 wireshark 跟踪中看到的带有语句的数据包只是语句准备步骤。要查看您需要查看 op_execute
(或 op_execute2
)数据包的值。 Firebird 有线协议(protocol)是二进制的,因此除了字符串值之外,您不会轻易看到其他类型的值(iirc wireshark 解析器不会对此进行解码)。
无法禁用它,因为这是 Firebird 协议(protocol)工作方式的基本部分。
如果您想检查执行时使用的参数,您应该考虑查看 Firebird 跟踪工具。
关于sql - Wireshark - 监听 SQL 查询但没有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37489733/