gas*_*luy 4 delphi firebird anydac firedac firebird-3.0
我使用Firebird和Delphi,我想通过线压缩实现通过互联网访问;但是我无法激活它。
我已按照本文档中的步骤获取新参数(我能找到的少数参数之一) How to enable WireCompression on Firebird 3.0 using FireDAC
在测试中,我使用 Windows server 2012 R2 Firebird:Firebird-3.0.4.33054_0_Win32(32 bits) 也复制到可执行文件夹。fbclient.dll zlib1.dll(idem 服务器和客户端)使用wirecompression=true 创建了firebird.conf。我在应用程序的 Firedac 中给出了 wirecompression=true 。
为什么我无法激活 P15:CZ 压缩?
Sending connection info for the example:
================================
Connection definition parameters
================================
DriverID=FB
Database=miservidor001:C:\sysdat\C100\gestdat03.fdb
User_Name=SYSDBA
PassWord=*****
WireCompression=true
================================
FireDAC info
================================
Tool = RAD Studio 10.2
FireDAC = 16.0.0 (Build 88974)
Platform = Windows 32 bit
Defines = FireDAC_NOLOCALE_META;FireDAC_MONITOR
================================
Client info
================================
Loading driver FB ...
Brand = Firebird
Client version = 300049900
Client DLL name = C:\APPS\WC01\fbclient.dll
================================
Session info
================================
Current catalog =
Current schema =
Server version = WI-V3.0.4.33054 Firebird 3.0
WI-V3.0.4.33054 Firebird 3.0/tcp (WIN-2012LAGO003)/P15:C
WI-V3.0.4.33054 Firebird 3.0/tcp (nucleo)/P15:C'
Run Code Online (Sandbox Code Playgroud)
注意:我不知道 Delphi 也不知道 FireDAC,这个答案是基于 Firebird 的一般行为和我维护其 JDBC 驱动程序 (Jaybird) 的经验。所以有可能专门针对 FireDAC/Delphi 有更好的答案。
启用或禁用线压缩完全由客户端决定,而不是由服务器决定。这意味着服务器的配置不是必需的,也没有任何影响,除非服务器本身充当客户端,例如使用execute statement ... on external datasource.
为了能够使用线压缩,您需要三件事:
fbclient.dllzlib1.dll(在与 相同的位置fbclient.dll,或在搜索路径上)第 3 点可能是您的问题:我不确定 FireDAC 是否具有WireCompression实际启用线压缩的连接属性。
我知道为客户端启用线压缩的两种方法:
firebird.conf在与fbclient.dll应用程序使用的目录相同的目录中创建。在此配置文件中,放置请求的配置选项(每行一个):
WireCompression = true
# maybe other config lines (eg AuthClient, WireCrypt, etc)
Run Code Online (Sandbox Code Playgroud)
不是创建firebird.conf文件,而是在isc_dpb_config(int 87) 数据库参数项中传递配置(用换行符分隔配置选项)。
该值firebird.conf与上一个选项中的文件内容相同。如果客户端使用旧的数据库参数缓冲区格式(其中字符串最大为 255 字节)并且您想传递(很多)更多配置选项,这可能会遇到大小问题。
选项 1 可能是最简单的,适用于所有框架。选项 2 取决于框架或驱动程序是否公开数据库参数缓冲区,或者它是否具有映射到isc_dpb_config.
例如,在使用 Jaybird 的 Java 中,您可以使用以下方法启用压缩(仅在使用本机连接时):
WireCompression = true
# maybe other config lines (eg AuthClient, WireCrypt, etc)
Run Code Online (Sandbox Code Playgroud)
这会打印出来WI-V3.0.4.33054 Firebird 3.0,WI-V3.0.4.33054 Firebird 3.0/tcp (host)/P15:CZ,WI-V3.0.4.33054 Firebird 3.0/tcp (host)/P15:CZ(注意这是<server version>,<server protocol info>,<client protocol info>)。的Z在P15:CZ装置连接已ZLIB压缩(在C所述连接被加密)。
在这里,该config属性是 的别名isc_dpb_config。