无法完成主机网络请求" psf"使用根据目录嵌入的firebird

时间:2014-05-04 01:40:50

标签: c# firebird embedded-database

我尝试使用以下代码连接到嵌入式firebird数据库:

    var cmm = new FbCommand();
    var csb = new FbConnectionStringBuilder();
    csb.ServerType = FbServerType.Embedded;
    csb.UserID = "SYSDBA";
    csb.Password = "masterkey";
    csb.Dialect = 3;
    csb.Charset = "UTF8";
    csb.Database = @"TESTE.FDB";
    cmm.Connection = new FbConnection(csb.ConnectionString);
    try
    {
      cmm.Connection.Open();
      cmm.CommandText = "SELECT NOME FROM TESTE WHERE ID=2";
      MessageBox.Show(Convert.ToString(cmm.ExecuteScalar()));
    }
    catch (Exception ex)
    {
      MessageBox.Show(ex.Message);
    }
    finally
    {
      cmm.Connection.Close();
    }

查询根据程序目录执行。如果我在目录中打开程序" C:\ np"或其他本地目录,它正常工作。但是,如果目录是网络映射,我收到以下错误:"无法完成主机的网络请求" psf"。无法建立连接。"

我可以做些什么来解决这种情况?感谢。

1 个答案:

答案 0 :(得分:2)

Firebird默认情况下不允许在网络共享上打开数据库,因为这可能导致数据库损坏,因为Firebird需要对数据库的独占访问,或者共享数据库文件的实例需要使用本地锁定文件来协调访问到服务器。通过网络共享进行访问意味着来自多个主机的多个实例可以访问同一个数据库文件,而这不是Firebird的设计使用方式。

如果您想从多个主机访问单个Firebird数据库,那么您应该设置Firebird服务器并配置所有客户端以连接到该服务器,您应该使用网络共享。

但是,如果您确实想要访问网络共享上的数据库,则可以将RemoteFileOpenAbility中的选项firebird.conf设置为1。鉴于文件损坏和数据丢失的风险,我强烈建议不要使用此选项,而是使用Firebird服务器。确保您也阅读配置文件中的警告。