我们有一个运行Firebird数据库的POS系统,其余的业务是基于SQL Server的SYSPRO。
我想在数据库之间运行查询和视图,因为两个数据库都有可以匹配的唯一键。
我是否通过链接服务器执行此操作?我尝试了一些链接服务器的变种,我不断收到各种错误消息。所以这就是我到目前为止所做的:
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连接,我可以看到数据库并使用以下连接字符串查看表:
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
答案 0 :(得分:0)
好的,这就是答案(我之后留下一小段头发;-))
我无法回答有关其工作原理的技术问题,但它确实有效。
首先你需要安装
然后是32位驱动程序
然后是64位驱动程序
然后你转到命令提示符(管理员)。转到你安装Firebird 2.5的地方。就我而言,它是
C:\Program Files (x86)\Firebird\Firebird_2_5\bin\
然后输入:
fbguard.exe - a
这将获得Firebird服务器的版本。
然后它是一个简单的ODBC链接设置。
如果您尝试链接到数据库的本地实例,请不要忘记输入
localhost:\Company\Data\Companydata.fdb
答案 1 :(得分:0)
简短的答案是肯定的,它可以正常工作(在sql端具有正确的驱动程序)。
让我尝试简化这种情况。实际上,OP到底在谈论哪种安装尚不清楚。
SQL Server必须使用ODBC或OLE DB驱动程序。不幸的是,Firebird官方驱动程序的日期是2017年。devart,ibprovider,ibphonix等一些第三方这样做。我使用ibprovider进行了测试。
最初的帖子显示了此连接字符串(部分):“ Dbname = C:\ Omni \ Company \ Data \ databasefile.FDB”。
表示通过TCP / IP连接的传统样式是 “ IP地址/端口:database_file_path”,OP似乎面对嵌入式Firebird安装。 区别在于,在后一种情况下,没有Firebird服务应答请求。一切都是通过DLL(通常称为fbembed.dll)完成的。
按照建议的方法安装Firebird作为服务肯定可以解决该问题,因为在此安装之后,始终有(Windows)服务在运行并负责数据库。但是,如果您不想/不需要此服务,MS SQL Server也可以使用“嵌入式”安装。
我很难发现的主要规则是:必须在Windows系统文件夹中安装一堆所需的Firebird DLL(但fbembed.dll)(在手册中据报道完全相反...)。
总而言之,我以这种方式构建了一个可以正常工作的服务器。
0)我一直都在使用ibprovider驱动程序,因为他们的开发人员提供了出色的支持服务。而且,也可以在此处找到一些基本说明:https://www.ibprovider.com/eng/documentation/mssql_2012.html
1)我开始下载官方嵌入式软件包。
2)在数据文件夹中,我放置了数据库,fbembed.dll和firebird.msg
3)在Windows系统文件夹中,我注册了所需的最低Firebird DLL:icuuc30,icuin30,icudt30和ib_util。
4)然后,我使用以下字符串创建了链接服务器(是的,OPENROWSET完全相同)(如果需要fbclient.dll,只需复制/粘贴embeded.dll并重命名):>
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无法管理它,但是您需要传递一个用户名/密码对:
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'myName',@useself=N'False',@locallogin=NULL,@rmtuser=N'SYSDBA',@rmtpassword='anytring'
6)您确实需要将几个特殊选项设置为True:排序规则,允许进程内,RPC,RPC Out。
是的。而且,由于您没有始终运行的服务,因此它至少可以节省几个MB内存。
最后但并非最不重要的,这要感谢ibprovider.com开发人员的帮助,以帮助我进行整理。