Firebird ADO.NET 4.10.0.0 数据提供程序是否可以与 Firebird 3.0 一起使用?
Does Firebird ADO.NET 4.10.0.0 Data provider work with Firebird 3.0?
我目前正在尝试让我的 ASP.net 4.5 项目连接到最近发布的 Firebird 3.0。
我正在使用 Visual Studio 2015 社区版 Firebird 3(64 位),并使用 NuGet 获取 ADO.NET 4.10.0.0。
但是,当我尝试连接时,出现异常并显示以下消息:
this.connect.ServerVersion threw an exception of type 'System.InvalidOperationException'
我收到的一些其他消息:
Message: "The connection is closed"
Source: FirebirdSQL.Data.Fierbird.Client
StackTrace:
at FirebirdSql.Data.FirebirdClient.FbConnection.get_ServerVersion() in C:\Users\Jiri\Documents\devel\NETProvider\working\NETProvider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnection.cs:line 217
IBExpert 连接没有任何问题。
此环境以前适用于 Firebird 2.5 和更旧的 ADO.Net
现在最好的猜测是它不受支持,但我的在线研究尚无定论(据我所知,有迹象表明它是用 Firebird 3 RC1 测试的)
如果有人能为我指明正确的方向,那就太棒了。
提前致谢!
我假设你安装了 Firebird 3 并且没有修改它的任何配置来回答这个问题。默认情况下,Firebird 3 的安装会有一些严格的安全设置:
- 它将仅支持新的 SRP 身份验证模型
- 需要有线协议加密
这意味着尚不支持 SRP 身份验证模型和有线协议加密的驱动程序(如 Firebird .NET 提供程序 4.10)将无法立即连接。
要能够连接,您需要执行以下操作
- 启用旧版身份验证模型
- 将有线协议加密设置从必需降级为启用
- 在旧身份验证模型中创建用户
这些步骤都需要编辑 firebird.conf
。如果您将 Firebird 安装到 Program Files
,您需要确保您的编辑器是 运行 管理员才能保存更改。
启用旧版身份验证
要启用旧版身份验证,您需要编辑或添加以下行到 firebird.conf
:(请注意,以 #
为前缀的行是注释!)
AuthServer = Srp, Legacy_Auth
降级有线协议加密
要降级有线协议加密设置,您需要编辑或添加以下行到 firebird.conf
:
WireCrypt = Enabled
创建旧版身份验证用户
为了能够在旧版身份验证模型中创建用户,您需要通过编辑或添加以下行到 firebird.conf
来启用旧版用户管理器插件:
UserManager = Srp, Legacy_UserManager
完成上述更改后,重新启动 Firebird,使用您最喜欢的数据库管理工具使用 SYSDBA 或其他管理员帐户连接到(任何)Firebird 3 数据库,并使用 Legacy_UserManager 和 CREATE USER
创建一个用户(用合适的值替换用户名和密码 legacy
):
CREATE USER legacy PASSWORD 'legacy' USING PLUGIN Legacy_UserManager
一定要提交,否则不会真正创建用户。
现在您应该可以使用刚创建的用户从 C# 进行连接了。
这也记录在 Firebird 3 Release Notes, Chapter 12 Compatibility Issues, Legacy Authentication。
不推荐使用 gsec
或服务功能来创建用户。如果您仍想使用其中任何一个在旧身份验证模型中创建用户,则需要编辑 firebird.conf
并将 Legacy_UserManager
放在列表的第一位。
支持 Firebird .NET 提供程序版本 5.0.0.0 及更高版本
请注意,Firebird .NET 提供程序版本 5.0.0.0 添加了对 SRP(无有线协议加密)的支持。因此,从 Firebird .NET 提供程序版本 5 开始,您可以使用新的身份验证模型。只需确保将有线协议加密(设置 WireCrypt
)从 Required
(默认)降级为 Enabled
,如上所述。
我目前正在尝试让我的 ASP.net 4.5 项目连接到最近发布的 Firebird 3.0。
我正在使用 Visual Studio 2015 社区版 Firebird 3(64 位),并使用 NuGet 获取 ADO.NET 4.10.0.0。
但是,当我尝试连接时,出现异常并显示以下消息:
this.connect.ServerVersion threw an exception of type 'System.InvalidOperationException'
我收到的一些其他消息:
Message: "The connection is closed"
Source: FirebirdSQL.Data.Fierbird.Client
StackTrace:
at FirebirdSql.Data.FirebirdClient.FbConnection.get_ServerVersion() in C:\Users\Jiri\Documents\devel\NETProvider\working\NETProvider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnection.cs:line 217
IBExpert 连接没有任何问题。
此环境以前适用于 Firebird 2.5 和更旧的 ADO.Net
现在最好的猜测是它不受支持,但我的在线研究尚无定论(据我所知,有迹象表明它是用 Firebird 3 RC1 测试的)
如果有人能为我指明正确的方向,那就太棒了。
提前致谢!
我假设你安装了 Firebird 3 并且没有修改它的任何配置来回答这个问题。默认情况下,Firebird 3 的安装会有一些严格的安全设置:
- 它将仅支持新的 SRP 身份验证模型
- 需要有线协议加密
这意味着尚不支持 SRP 身份验证模型和有线协议加密的驱动程序(如 Firebird .NET 提供程序 4.10)将无法立即连接。
要能够连接,您需要执行以下操作
- 启用旧版身份验证模型
- 将有线协议加密设置从必需降级为启用
- 在旧身份验证模型中创建用户
这些步骤都需要编辑 firebird.conf
。如果您将 Firebird 安装到 Program Files
,您需要确保您的编辑器是 运行 管理员才能保存更改。
启用旧版身份验证
要启用旧版身份验证,您需要编辑或添加以下行到 firebird.conf
:(请注意,以 #
为前缀的行是注释!)
AuthServer = Srp, Legacy_Auth
降级有线协议加密
要降级有线协议加密设置,您需要编辑或添加以下行到 firebird.conf
:
WireCrypt = Enabled
创建旧版身份验证用户
为了能够在旧版身份验证模型中创建用户,您需要通过编辑或添加以下行到 firebird.conf
来启用旧版用户管理器插件:
UserManager = Srp, Legacy_UserManager
完成上述更改后,重新启动 Firebird,使用您最喜欢的数据库管理工具使用 SYSDBA 或其他管理员帐户连接到(任何)Firebird 3 数据库,并使用 Legacy_UserManager 和 CREATE USER
创建一个用户(用合适的值替换用户名和密码 legacy
):
CREATE USER legacy PASSWORD 'legacy' USING PLUGIN Legacy_UserManager
一定要提交,否则不会真正创建用户。
现在您应该可以使用刚创建的用户从 C# 进行连接了。
这也记录在 Firebird 3 Release Notes, Chapter 12 Compatibility Issues, Legacy Authentication。
不推荐使用 gsec
或服务功能来创建用户。如果您仍想使用其中任何一个在旧身份验证模型中创建用户,则需要编辑 firebird.conf
并将 Legacy_UserManager
放在列表的第一位。
支持 Firebird .NET 提供程序版本 5.0.0.0 及更高版本
请注意,Firebird .NET 提供程序版本 5.0.0.0 添加了对 SRP(无有线协议加密)的支持。因此,从 Firebird .NET 提供程序版本 5 开始,您可以使用新的身份验证模型。只需确保将有线协议加密(设置 WireCrypt
)从 Required
(默认)降级为 Enabled
,如上所述。