如何将 IBM DB2 服务器添加到 SQL Server 的链接服务器



从。net,我可以连接到DB2数据库:

  1. 首先包含对"IBM.Data.DB2.iSeries"的引用
  2. 然后创建一个新的IBM.Data.DB2.iSeries.iDB2Connection。连接字符串为

    DataSource=ChaDb2Server;UserID=MyUsername;Password=MyPassword;
    
  3. 然后创建IBM.Data.DB2.iSeries。

现在我试图让我的SQL Server 2005直接访问相同的数据。在SQL Server Management Studio中,我右键单击链接服务器,选择"新建链接服务器…"

Linked Server:   ChaDb2Server
Provider:        IBM OLE DB Provider for DB2
Product Name:    ???
Data Source:     ChaDb2Server
Provider String: DataSource=ChaDb2Server;UserID=MyUsername;Password=MyPassword;
Location:        ???

我可以让Location为空,但是Product Name不能为空,我不知道该在这里填什么。

在Security选项卡上,我选择"Be made using this Security context",然后重复UserID和密码。

链接的服务器被创建,但当我试图展开Catalogs/default/Tables时,我得到一个错误消息:

OLE DB provider 'IBMDADB2.DB2COPY1' reported an error. Authentication failed. (Microsoft SQL Server, Error: 7399)

我不知道IBMDADB2的名字在哪里。DB2COPY1来自。

另外,当我尝试选择data:

Select * from ChaDB2Server.ChaDb2Server.Information_Schema.Tables

我得到一个类似的错误:

Msg 7399, Level 16, State 1, Line 1
OLE DB provider 'IBMDADB2.DB2COPY1' reported an error. Authentication failed.

显然,我连接服务器的方式中缺少了一些东西。有人知道怎么做吗?

我在使用IBM提供程序时运气不佳。我听说这很棘手。但是,我已经成功地将Microsoft OLE DB Provider用于ODBC驱动程序。

我的配置指向DSN并且工作良好。我填写的唯一3个字段是提供程序(Microsoft OLE DB provider for ODBC Drivers),产品名称(value='未使用')和数据源(SQL服务器上的DSN名称)。

如果您不介意使用ODBC提供程序,它将为您工作。

我将DB2 LUW服务器设置为SQL中的链接服务器的方法如下:

1-我在mySQL服务器上安装了合适的DB2 LUW客户端

--> This will installed the missing driver for DB2 (IBMADB2.DB2COPY1)

2-我创建链接服务器如下:

replace the <...text...>  with your values
/****** Object:  LinkedServer [<DB2_DB_Name>]    Script Date: 09/08/2014 09:46:02 ******/
EXEC master.dbo.sp_addlinkedserver @server = N'<DB2_DB_Name>', @srvproduct=N'IBMADB2.DB2COPY1', @provider=N'IBMDADB2.DB2COPY1', @provstr=N'Database=<DB2_DB_Name>;Hostname=<DB2 Server running the DB2 database>;Port=5900'
 /* For security reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'<DB2_DB_Name>',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL
GO
EXEC master.dbo.sp_serveroption @server=N'<DB2_DB_Name>', @optname=N'collation compatible', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'<DB2_DB_Name>', @optname=N'data access', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'<DB2_DB_Name>', @optname=N'dist', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'<DB2_DB_Name>', @optname=N'pub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'<DB2_DB_Name>', @optname=N'rpc', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'<DB2_DB_Name>', @optname=N'rpc out', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'<DB2_DB_Name>', @optname=N'sub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'<DB2_DB_Name>', @optname=N'connect timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'<DB2_DB_Name>', @optname=N'collation name', @optvalue=null
GO
EXEC master.dbo.sp_serveroption @server=N'<DB2_DB_Name>', @optname=N'lazy schema validation', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'<DB2_DB_Name>', @optname=N'query timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'<DB2_DB_Name>', @optname=N'use remote collation', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'<DB2_DB_Name>', @optname=N'remote proc transaction promotion', @optvalue=N'true'
GO

我不知道为什么,但是当通过GUI设置时,我从来没有运气得到链接服务器的工作。但是,我已经成功地使用了sp_addlinkedserver。有关如何设置此设置的IBM说明,请参阅此处:https://www-304.ibm.com/support/docview.wss?uid=swg21394344

最新更新