Firebird ODBC 连接(64 位)失败并显示 'username and password are not defined'

Firebird ODBC connection (64-bit) fails with 'username and password are not defined'

我在新设置的 Windows Server 2016 上安装了 Firebird 3.0.3 Classic Server 32 位(32 位,因为我必须使用仅在 32 位中可用的旧版 UDF dll) .除了 64 位 ODBC 连接外,所有连接都可以从客户端机器(32 位 ODBC 连接,FlameRobin)正常工作。但是当我尝试通过 64 位 ODBC DSN 访问数据库时,出现错误 "your username and password are not defined".

在这种情况下,我的客户端计算机是 Windows Server 2012 R2。我已完成以下步骤:

  1. 安装 32 位 Firebird 客户端库(版本 3.0.3)
  2. 安装 64 位 Firebird 客户端库(版本 3.0.3)
  3. 安装 32 位 ODBC 驱动程序(版本 2.0.5.156)
  4. 安装 64 位 ODBC 驱动程序(版本 2.0.5.156)
  5. 打开 32 位 Windows ODBC 管理控制台并创建 DSN - 连接测试正常
    截图:https://postimg.cc/WDrJQryH
  6. 打开 64 位 WindowsODBC 管理控制台并创建 DSN - 连接错误! 截图:https://postimg.cc/5XDC7psz

我确定我没有拼错密码。我错过了什么?非常感谢!

在一般情况下,像这样的问题(当您有两个几乎相同的应用程序并且只有一个在工作时)通常通过比较它们的行为并寻找差异来诊断,然后尝试更改计算机或应用程序设置以消除可疑和不需要的差异,除非两个程序都工作。一个有用的工具是例如 SysInternals Process Monitor,它可以设置为记录文件 I/O 轨道(还有注册表和其他东西),这可以提供对程序实施及其失败的有价值的洞察。在这种特殊情况下,当您在 ODBC32 和 ODBC64 windows 中按 "test connection" 按钮时,文件和注册表访问的轨迹可能会突出显示与 32 位应用程序相比,64 位应用程序开始出错的地方.

如果暂时跳过系统诊断并仅尝试猜测,那么 Mark 建议 64 位应用程序无法找到正确的 fbclient.dll(正确可能意味着很多事情:FB 版本,32/ 64 位,文本配置文件等等)。

看到你的 ODBC 设置 windows 有一个显式字段 "Client" 和 "Browse" 按钮我猜测 ODBC 试图自动定位客户端库并且出于某种原因定位了一些倒霉的一个 然后我建议您尝试将 "Client" 字段设置为 Firebird 引擎本身使用的 fbclient.dll 文件,如果您没有更改默认安装设置,它将类似于 "c:\Program Files\Firebird\Firebird_3_0\bin\fbclient.dll"