使用ADO.Net提供程序将Firebird 2.5迁移到4.0



我刚刚将数据库升级到Firebird 4.0,当使用数据库管理工具连接到数据库时,一切似乎都能正常工作。

因此,在确保我的ADO.Net升级到FirebirdSql.Data.FirebirdClientv8.0.1(最新版本(后,现在我尝试连接。

以下是我如何创建连接字符串(是的,数据库路径存在,我确保用户有修改权限(:

FbConnectionStringBuilder cs = new FbConnectionStringBuilder();
cs.Database = @"C:/myPath/MyDB.FDB";
cs.DataSource = "localhost";
cs.UserID = "sysdba";
cs.Password = "masterkey";
cs.Dialect = 3;
cs.Pooling = false;
cs.ServerType = FbServerType.Default;
// --- Omitted at first - any of the 3 types leads to errors!
//cs.WireCrypt = FbWireCrypt.Disabled;
var DBConn = new FbConnection(cs.ConnectionString);
DBConn.Open();

现在,请注意,我遗漏了WireCrypt选项(一开始是故意的(。我的错误是:

登录过程中发生错误,请查看服务器firebird.log以了解的详细信息

firebird.log说:

身份验证错误服务器上没有匹配的插件

所以我在谷歌上搜索了一下,发现它可能来自有线加密。好吧,所以我确实尝试了所有三个版本的有线加密——如果我使用RequiredEnabled,我会得到上面的错误。如果我使用Disabled,我会得到

客户端和服务器上请求的不兼容有线加密级别

此外,我尝试在firebird.conf和代码中设置WireCrypt = Disabled,重新启动服务并再次测试-现在我得到了与前两种情况相同的结果:

身份验证错误服务器上没有匹配的插件

所以我想我在这里遗漏了一些关于加密插件的信息,但我在那里找不到任何有价值的信息,谢谢你的帮助!

更新:以下是我尝试的设置和我得到的错误:

尝试1:所有firebird.conf默认值(我在这里发布它是为了缩短这里的时间(:

连接字符串1:

character set=NONE;data source=localhost;initial catalog=C:UsersDBAccessMYDB.FDB;user id=SYSDBA;password=masterkey;wire crypt=Disabled

客户端和服务器上请求的不兼容有线加密级别

连接字符串2(有线密码=已启用或必需(

身份验证错误服务器上没有匹配的插件

尝试2:

WireCrypt = Disabled

连接字符串1:

character set=NONE;data source=localhost;initial catalog=C:UsersDBAccessMYDB.FDB;user id=SYSDBA;password=masterkey;wire crypt=Disabled

身份验证错误服务器上没有匹配的插件

连接字符串2(有线密码=已启用(=>同样的错误!

尝试3:

AuthClient = Srp256, Srp
UserManager = Srp

连接字符串1:

character set=NONE;data source=localhost;initial catalog=C:UsersDBAccessMYDB.FDB;user id=SYSDBA;password=masterkey;wire crypt=Disabled

客户端和服务器上请求的不兼容有线加密级别

连接字符串2(有线密码=已启用或必需(

身份验证错误服务器上没有匹配的插件

尝试4:

AuthClient = Srp256, Srp
UserManager = Srp
WireCryptPlugin = ChaCha, Arc4
WireCrypt = Enabled
ServerMode = Super

连接字符串(与连接字符串中的任何有线加密选项的结果相同(:

character set=NONE;data source=localhost;initial catalog=C:UsersDBAccessMYDB.FDB;user id=SYSDBA;password=masterkey;wire crypt=Enabled

身份验证错误服务器上没有匹配的插件

注意:我还在firebird.log中看到以下消息,这可能是由于服务重新启动。。。

inet_error:读取错误号=10054,客户端主机=DESKTOP-1234,地址=127.0.0.1/60348,用户=myusername

Firebird ADO.net提供程序版本8在连接到Firebird 3.0或更高版本时仅支持Srp身份验证插件,但Firebird 4.0默认情况下仅使用更安全的Srp256插件。您需要将firebird.conf中的AuthServer设置更改为Srp256,Srp,Firebird ADO.net提供程序才能连接。

另请参阅此问题:支持Srp256[DNET942]#864

好的,我最终使用以下设置使其工作:

firbird.conf:

AuthServer =  Srp256,Srp
UserManager = Srp
WireCrypt = Enabled

连接字符串代码:

FbConnectionStringBuilder bld = new FbConnectionStringBuilder();
bld.Charset = "NONE";
bld.DataSource = "localhost";
bld.Database = @"C:UsersDBAccessMYDB.FDB";
bld.UserID = "SYSDBA";
bld.Password = "masterkey";
bld.WireCrypt = FbWireCrypt.Enabled;
string connStr = bld.ConnectionString;

使用AuthServer=合法身份验证关于firebird.conf

最新更新