我们有一个使用 IBM DB2 iAccess 数据库的合作伙伴,我们使用 SQL Server 上的链接服务器连接到该数据库。它已经运行了很长时间,但在周末他们升级了他们的系统,现在我们的一项工作失败了。
链接服务器仍然连接良好,这意味着如果我查看 Server Objects->Linked Servers->servername 下的服务器,它就会显示出来,并且我可以看到所有表。
当我通过 OpenQuery 运行查询时,它工作正常:
Select * From OpenQuery(GLDATA, 'Select WPCPKG, WPCBAC, WPCDEN, WPCPRT from S782D480.GLDATA.GPCKCTL') -- 这有效
但是当我使用插入该表所需的四部分命名时,它失败了:
从 GLDATA.S782D480.GLDATA.GPCKCTL 中选择 WPCPKG、WPCBAC、WPCDEN、WPCPRT——失败,但上周曾经工作过
错误说:
链接服务器“GLDATA”的 OLE DB 提供程序“MSDASQL”返回消息“未指定的错误”。
链接服务器“GLDATA”的 OLE DB 提供程序“MSDASQL”返回消息“[IBM][System i Access ODBC 驱动程序][DB2 for i5/OS] SQL0204 - QSYS2 类型 *FILE 中的 SYSCOLUMNS 未找到。 ”。
消息 7311,级别 16,状态 2,第 7
行无法获取链接服务器“GLDATA”的 OLE DB 提供程序“MSDASQL”的架构行集“DBSCHEMA_COLUMNS”。提供者支持该接口,但在使用时返回失败代码。
根据这篇文章,我尝试删除并重新创建链接服务器,并在提供程序中关闭和打开“允许不访问”,但这没有用。
该错误非常模糊,以至于我找不到太多可尝试的信息,而且我怀疑这是他们的配置问题,但除非我将解决方案放在盘子上,否则他们修复问题的速度非常慢。
嗯,我做了很多搜索,找到了一些关于 SQL0204 错误的信息,这让我找到了这个支持页面:
https://www-01.ibm.com/support/docview.wss?uid=nas8N1016377
如果您看到 SQL0204 错误,其中包含有关在服务器上运行哪些命令的说明。
我将它转发给了合作伙伴的 IT 人员,他尝试了它(以及他说的其他一些命令)并且它开始工作了。
我会尝试看看是否可以让他向我发送他运行的其他命令,以便我可以使这个答案更完整。
编辑:
万一链接页面消失,这里是信息的屏幕截图: