【问题标题】:.NET IIS Soap server connect Firebird database from UNC path.NET IIS Soap 服务器从 UNC 路径连接 Firebird 数据库
【发布时间】:2019-12-26 09:47:10
【问题描述】:

我正在使用带有 .NET 4.0 和 Firebird ADO 提供程序版本 4.6 的 Visual Studio 2017。我无法连接到另一台服务器上的数据库文件,然后是 de Web 服务和 Firebird 服务。

例如:

Firebird host: localhost
Firebird port: 3050

数据库文件路径:\\\\server1\C$\Databases\test.fdb

当我尝试设置连接字符串时,我创建它如下所示:

connectionstring = "User ID=sysdba;Password=masterkey;Database=localhost/3050:\\server1\C$\Databases\test.fdb;DataSource=localhost;Port=3050;Charset=NONE;";

当我尝试连接时,我收到消息“不可用的数据库”。当我对 Delphi 项目进行同样的尝试时,它确实可以工作,所以我确信主机、端口和路径都可以工作。这是 de .NET Firebird 提供程序中的错误还是如何修复我的连接字符串?

我如何在 Delphi 中建立连接字符串:

connectionstring := 'localhost/3050:\\server1\C$\Databases\test.fdb';

顺便说一句,我已经尝试了几乎所有其他设置数据库字符串部分的可能性。

【问题讨论】:

  • 请说明您在 Delphi 中的连接方式。了解您在 Delphi 中的连接方式可能会给我们一些线索,您需要在 C# 中做什么。但是,默认情况下,Firebird 服务器不允许连接到远程数据库,因为这会损坏数据库。数据库应与 Firebird 服务器进程位于同一主机上。更不用说能够访问 C$ 共享是一个很大的安全风险。简而言之,您根本不应该这样做。
  • @MarkRotteveel 我已经用 Delphi 中的示例连接字符串更新了我的问题
  • 如果从 Database 属性中删除 localhost/3050: 会发生什么。您已经通过DataSourcePort 指定了这些。据我所知,Firebird ado.net 用于解析该条目样式的格式需要正常的 Windows 路径,因此它将整个值视为数据库名称,而不是主机、端口、数据库名称。跨度>
  • @MarkRotteveel 也试过这个,结果是一样的。

标签: .net firebird unc


【解决方案1】:

尝试将您的陈述更改为以下内容;

connectionstring = @"User ID=sysdba;Password=masterkey;Database=localhost/3050:\\server1\C$\Databases\test.fdb;DataSource=localhost;Port=3050;Charset=NONE;"

或者如果您不想使用“@”,请将其更改为以下内容;

connectionstring = "User ID=sysdba;Password=masterkey;Database=localhost/3050:\\\\server1\\C$\\Databases\\test.fdb;DataSource=localhost;Port=3050;Charset=NONE;"

反斜杠被解释为转义字符,因此您需要为每个不想转义的反斜杠添加另一个反斜杠,或者只需在字符串前面使用“@”,它会为您完成。

【讨论】:

    【解决方案2】:

    您的 Firebird 数据库版本是多少?

    我们最近从 Firebird 2.5 升级到 Firebird 3.0,我不得不在我的项目中进行一些更改以使其再次工作。其中一些正在更改框架编号,替换引用中的 dll,更改 firebird.conf 内容等。

    供您参考 firebird 3.0 我用它来连接:

    Imports FirebirdSql.Data.FirebirdClient
    
    Public con As New FbConnection("ServerType=0;User=SYSDBA;Password=bla;Size=4096;Dialect=3;Pooling=FALSE;database=localhost/3050:C:\example.FDB")
    

    【讨论】:

    • 这是VB吗?我没有看到反斜杠加倍
    • 我使用 Firebird 2.5
    • 是的,它是 Microsoft Visual Basic 2017。使用 firebird 数据库 2.5 我有一个具有以下设置的项目:.NET Framework 3.5 参考:FirebirdSql.Data.FirebirdClient .NET 2.7.7.0 和 FirebirdSql.VisualStudio。 DataTools .NET 3.0.1.0 ,在 Visual Studio Community 2017 ver 15.3.5 上连接字符串是: Public con As New FbConnection("ServerType=0;User=SYSDBA;Password=bla;Size=4096;Dialect=3;Pooling=错误;数据库=192.168.0.241:C:\Mbla.FDB")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 2021-09-23
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 2023-01-07
    相关资源
    最近更新 更多