All*_*n W 5 sql-server db2 linked-server
从 .Net,我可以连接到 DB2 数据库:
然后我创建一个新的 IBM.Data.DB2.iSeries.iDB2Connection。连接字符串是
DataSource=ChaDb2Server;UserID=MyUsername;Password=MyPassword;
Run Code Online (Sandbox Code Playgroud)然后我创建了一个 IBM.Data.DB2.iSeries.iDB2Command,等等。
现在我试图让我的 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: ???
Run Code Online (Sandbox Code Playgroud)
我可以将 Location 留空,但 Product Name 不能为空,我不知道在这里填写什么。
在“安全”选项卡上,我选择“使用此安全上下文制作”并重复用户 ID 和密码。
链接服务器已创建,但是当我尝试展开目录/默认/表时,我收到一条错误消息:
OLE DB provider 'IBMDADB2.DB2COPY1' reported an error. Authentication failed. (Microsoft SQL Server, Error: 7399)
Run Code Online (Sandbox Code Playgroud)
我不知道 IBMDADB2.DB2COPY1 这个名字从何而来。
另外,当我尝试选择数据时:
Select * from ChaDB2Server.ChaDb2Server.Information_Schema.Tables
Run Code Online (Sandbox Code Playgroud)
我收到类似的错误:
Msg 7399, Level 16, State 1, Line 1
OLE DB provider 'IBMDADB2.DB2COPY1' reported an error. Authentication failed.
Run Code Online (Sandbox Code Playgroud)
显然,我链接服务器的方式缺少一些东西。有人知道怎么做吗?
我不知道为什么,但在通过 GUI 设置时,我从来没有运气让链接服务器正常工作。不过,我已经成功地使用 sp_addlinkedserver 做到了这一点。请参阅此处了解 IBM 有关如何设置的说明:https://www-304.ibm.com/support/docview.wss? uid=swg21394344