我想知道是否可以使用Wireshark将整个查询记录到Firebird 3.0数据库服务器。我能够记录一些通信,但我看到带有问号而不是值的查询。
select * from SP_procedure_name(?,?,?)
我没有看到任何可以传输这些值的数据包。这是某种类型的数据库通信加密吗?有没有办法禁用它并查看确切的提供值?
答案 0 :(得分:3)
在Firebird有线协议中,分配了一个语句句柄(op_allocate_statement
),在该句柄(op_prepare_statement
)上准备了一个语句,然后您可以使用不同的值集多次执行该语句对于绑定参数(op_execute
/ op_execute2
)。
因此,您在带有语句的wireshark跟踪中看到的数据包只是语句准备步骤。要查看您需要查看op_execute
(或op_execute2
)数据包的值。 Firebird线程协议是二进制的,因此除了字符串值之外,您不会轻易看到其他类型的值(例如,wireshark解析器不会对此进行解码)。
无法禁用此功能,因为这是Firebird协议工作原理的基本部分。
如果要检查执行时使用的参数,则应考虑查看Firebird跟踪工具。