You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Firebird ODBC驱动链接SSMS至Firebird时遇元数据不一致问题

问题场景

已通过Firebird 3.3 ODBC驱动创建ODBC数据源,将默认凭据(SYSDBA/masterkey)的Firebird 3.0.9空白数据库添加为SQL Server链接服务器(名称TEST),执行查询语句SELECT * FROM [TEST]...[RDB$DATABASE]时触发以下错误:

Message 7356, Level 16, State 1, Line 1
OLE DB provider 'MSDASQL' for linked server 'TEST' provided inconsistent metadata for a column. The RDB$SECURITY_CLASS column (compile-time ordinal 3) of the RDB$DATABASE object reported a LENGTH value of 9 at compile time and 31 at run time

重要说明:OPENQUERY同样无法使用,且需直接通过链接服务器执行查询,不接受OPENQUERY方案。

解决方法
  • 调整ODBC数据源元数据配置:打开Firebird ODBC数据源的设置界面,找到Metadata相关配置项,将VARCHAR default length从默认的9修改为31;或者勾选Use default varchar length from database选项,让驱动直接从数据库读取字段的真实长度元数据。
  • 修改链接服务器OLE DB属性:在SQL Server Management Studio中,进入链接服务器TEST的属性,找到MSDASQL提供程序的设置,启用Allow inprocess选项,同时取消勾选Level zero only,避免元数据读取的限制。
  • 避免使用SELECT *,显式指定字段:查询时明确列出需要的字段,跳过触发错误的RDB$SECURITY_CLASS字段(如果业务不需要),例如执行:
    SELECT RDB$DATABASE_NAME, RDB$CHARACTER_SET_NAME FROM [TEST]...[RDB$DATABASE]
    
  • 升级Firebird ODBC驱动:尝试更新到最新版本的Firebird ODBC驱动,新版本通常会修复这类跨数据库的元数据兼容性问题。

内容的提问来源于stack exchange,提问作者Marcel Lorenz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:45:39