首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Firebird FDB链接服务器SSMS

Firebird FDB链接服务器SSMS
EN

Stack Overflow用户
提问于 2016-12-15 19:41:42
回答 2查看 5.3K关注 0票数 1

我们有一个运行Firebird数据库的POS系统,其余的业务都在基于SQL Server的SYSPRO上。

我想在两个数据库之间运行查询和视图,因为两个数据库都有可以匹配的唯一键。

是否通过链接服务器执行此操作?我已经尝试了链接服务器的一些变体,并且不断收到各种错误消息。这就是我到目前为止所得到的:

代码语言:javascript
运行
复制
EXEC master.dbo.sp_addlinkedserver 
@server = N'OMNI', 
@srvproduct=N'OMNI',
@provider=N'MSDASQL', 
@datasrc=N'C:\Omni\Company\Data\databasefile.FDB',
@provstr=N'Driver={Firebird/InterBase(r) driver};Dbname=C:\Omni\Company\Data\databasefile.FDB;CHARSET=NONE;UID=SYSDBA;'

我也尝试过使用Excel进行连接,我可以使用以下连接字符串查看数据库和表:

代码语言:javascript
运行
复制
Provider=MSDASQL.1;Persist Security Info=True;Data Source=Omni;Extended Properties="DSN=Omni;Driver={Firebird/InterBase(r) driver};Dbname=C:\Omni\Company\Data\databasefile.FDB;CHARSET=NONE;UID=SYSDBA;";Initial Catalog=Omni
EN

回答 2

Stack Overflow用户

发布于 2016-12-19 18:49:37

好的,这就是答案(这之后我还有一小段头发;-)

我不能回答为什么这是可行的技术问题,但它是可行的。

首先,您需要安装

Firebird 2.5

然后是32位驱动程序

32 Bit

然后64位驱动程序

64 Bit

然后转到命令提示符(管理员)。转到安装Firebird 2.5的位置。在我的例子中是

代码语言:javascript
运行
复制
C:\Program Files (x86)\Firebird\Firebird_2_5\bin\

然后输入:

代码语言:javascript
运行
复制
fbguard.exe - a

这将使Firebird服务器的一个版本正常运行。

然后是一个ODBC链接的简单设置。

如果您尝试链接到数据库的本地实例,请不要忘记将

代码语言:javascript
运行
复制
localhost:\Company\Data\Companydata.fdb
票数 1
EN

Stack Overflow用户

发布于 2019-05-20 22:56:50

简短的回答是肯定的,它是有效的(有正确的驱动程序,SQL端)。

让我试着简化这个场景。事实上,目前还不清楚OP所说的是哪种安装。

SQL Server必须使用ODBC或OLE DB驱动程序。不幸的是,官方火鸟司机的日期是2017年。一些第三方做了它们,devart,ibprovider,ibphonix等等。我使用ibprovider做了我的测试。

最初的post显示了这个连接字符串(部分):"Dbname=C:\Omni\Company\Data\databasefile.FDB".

说通过TCP/IP连接的传统方式是"IP地址/端口:数据库_文件_路径“,OP似乎面对嵌入式Firebird安装。不同之处在于,在后一种情况下,没有Firebird服务响应请求。所有的工作都是通过一个DLL完成的,这个DLL通常被命名为fbembed.dll。

按照建议将Firebird安装为服务,肯定会解决这个问题,因为在此安装之后,会有一个(Windows)服务始终运行并管理数据库。但是,如果您不想/不需要此服务,MS SQL Server也可以使用“嵌入式”安装。

我几乎没有发现的主要规则是:所需的一堆Firebird DLL(但fbembed.dll)必须安装在Windows系统文件夹中(手册中的报告正好相反……)。

总而言之,我已经用这种方式构建了一个工作服务器。

0)我让benn一直使用ibprovider驱动程序,因为他们的开发者提供了很好的支持服务。此外,还可以在此处找到一些基本说明:https://www.ibprovider.com/eng/documentation/mssql_2012.html

1)我开始下载官方的嵌入式包。

2)在data文件夹中,我已经将数据库、fbembed.dll和firebird.msg

3)在windows系统文件夹中,我已经注册了所需的最小firebird DLL : icuuc30、icuin30、icudt30和ib_util。

4)然后,我使用以下字符串(如果需要fbclient.dll,只需复制/粘贴embeded.dll并重命名它)创建了一个链接服务器(是的,OPENROWSET完全相同):

代码语言:javascript
运行
复制
EXEC master.dbo.sp_addlinkedserver @server = N'myName', @srvproduct=N'myName', @provider=N'LCPI.IBProvider.3', @datasrc=N'myName', @provstr=N'location=E:\mypath\MYDB.GDB;dbclient_library_64=E:\mypath\fbembed.dll;auto_commit=true;nested_trans=true;truncate_char=false;dbtime_rules=1;support_odbc_query=true;asynch_fetch=2;ignore_err_param=4;schema_ldr_cfg__check_constraints=0;schema_ldr_cfg__descriptions=0;dbclient_type=fb'

5)安全性不是问题。DLL不管理它,但您需要传递一个userid/password对:

代码语言:javascript
运行
复制
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'myName',@useself=N'False',@locallogin=NULL,@rmtuser=N'SYSDBA',@rmtpassword='anytring'

6)您确实需要将两个特殊选项设置为True:排序、允许进程内、RPC、RPC输出。

是的,它可以工作。而且它至少节省了几MB内存,因为你没有一个经常运行的服务。

最后但并非最不重要的一点是,感谢帮助我解决问题的ibprovider.com开发人员。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41163319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档