我正在尝试通过集成包将数据从客户的 Firebird SQL 数据库下载到我们的 SQL Server。
在 SQL Server Management Studio 中,我右键单击目标数据库,选择“任务”>“导入数据”。作为数据源,我选择
*.Net Framework Data Provider for ODBC .*
我输入了连接字符串:
User=Yano;
Password=p@ssw0rd;
Database=MyDatabase;
DataSource=sql.example.com;
Port=3050;
Dialect=1;
Charset=NONE;
Role=;
Connection lifetime=15;
Pooling=false;
MinPoolSize=0;
MaxPoolSize=50;
Packet Size=8192;
ServerType=0;
司机:
Firebird/InterBase(r) driver
。
然后,尝试继续导入向导,我收到以下错误:
ERROR [08004] [ODBC Firebird Driver]Unable to complete network request to host "xnet://Global\FIREBIRD".
ERROR [01S00] [ODBC Firebird Driver]Invalid connection string attribute
ERROR [01S00] [ODBC Firebird Driver]Invalid connection string attribute
ERROR [01S00] [ODBC Firebird Driver]Invalid connection string attribute
...
经过严格的谷歌搜索后,当客户端连接到服务器本地时,Firebird 数据库内部似乎使用了 xnet 协议。这是可疑的,因为我正在尝试远程连接。我已在连接字符串中填写了目标主机 (
DataSource=sql.example.com;
),因此我认为驱动程序没有理由尝试连接到本地计算机(不存在此类数据库)。
我的问题有两个:
为什么我会收到此特定错误?
我该如何进行这项工作? (如果合理可能的话。)
我确信连接字符串没有问题,防火墙已打开并且服务器正在运行,因为我可以轻松地使用它通过使用 Nuget 包从 C# 应用程序进行连接。
我可以用 C# 编写简单的桥来迁移数据,但似乎使用集成包会是解决此类问题的更优雅的工具。
这个答案建议使用付费第3方工具,但我强烈更喜欢解决方案没有付费第3方工具。
如果您使用 Firebird ODBC 驱动程序,则应使用
DBNAME=sql.example.com/3050:MyDatabase
(或 DBNAME=inet://sql.example.com:3050/MyDatabase
),并且您指定的大多数其他连接属性对于 ODBC 驱动程序无效。另请参阅从应用程序连接到 Firebird 以获取属性列表。