c# - Firebird 错误: "operating system directive CreateFile failed" on opening connection

标签 c# firebird firebird-.net-provider

我已将问题范围缩小到可以轻松产生此问题的小样本。

简介 - 我使用 firebird 的嵌入式 dll 进行数据库连接,即 fbembed.dll 来连接到 firebird 数据库。 在代码中,我有三个像这样的连接字符串(注意第三个连接字符串中指定的附加属性客户端库)-

private const string connection1 = @"User=SYSDBA;Password=masterkey;Database=D:\DB1.fdb;ServerType=1;Charset=UTF8";
private const string connection2 = @"User=SYSDBA;Password=masterkey;Database=D:\DB2.fdb;ServerType=1;Charset=UTF8";
private const string connection3 = @"User=SYSDBA;Password=masterkey;Database=D:\DB2.fdb;ServerType=1;client library=D:\fbembed.dll;Charset=UTF8";

我的用户界面上有两个按钮,单击第一个按钮时我有此代码 -

FbConnection fbConnection = new FbConnection(connection1);
fbConnection.Open();

在第二个按钮上单击我有此代码 -

FbConnection fbConnection = new FbConnection(connection3);
fbConnection.Open();

如果我使用指定为 connection3 的连接字符串创建连接,我将收到 FbException “操作系统指令 CreateFile 失败”

但是,如果我将连接字符串替换为connection2,它就可以正常工作。

此外,如果我先使用connection3 创建连接,然后使用connection1 创建连接,则没有问题,但如果我先使用connection1 创建连接,然后使用connection3 创建连接,则会出现相同的异常。

注意,connection2和connection3中指定的数据库是相同的,唯一的区别是附加属性客户端库。

为什么嵌入式 Firebird 会出现这种奇怪的行为。如果我的系统上安装了 firebird 服务器,一切都可以正常工作。但是,我想知道为什么它仍然存在于 firebird 的嵌入 dll 中?

最佳答案

您的问题涉及:http://tracker.firebirdsql.org/browse/CORE-2507

这是FB引擎的一个错误,已在2.1.4版本中修复。

关于c# - Firebird 错误: "operating system directive CreateFile failed" on opening connection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11529545/

相关文章:

c# - 在没有开发者模式的情况下安装开发的应用程序

c# - 用文本替换损坏的图像图标

c# - FindControl 不适用于绑定(bind)服务器标签,为什么?

c# - Net Core 3.1、Firebird 2.5 和 FB.EF 7.5

c# - 如何以编程方式创建 Firebird 数据库?

c# - 从 Compact .Net 1.0 应用程序启动另一个应用程序

c# - 畸形字符串异常 Firebird + linq

c# - 将选项设置为 FbTransaction

Python连接到firebird docker数据库