【发布时间】:2013-05-31 13:21:42
【问题描述】:
我有一个使用 OLE DB 提供程序“IBMDA400”从 SQL Server 2008 R2 到 DB2 数据库 (V4R5M0) 的链接服务器
链接服务器详细信息
EXEC master.dbo.sp_addlinkedserver
@server = N'JTEST', @srvproduct=N'IBM OLE DB Provider for DB2',
@provider=N'IBMDA400', @datasrc=N'TestName'
这很好用:
SELECT * FROM OPENQUERY(JTEST, 'Select * from QSYS2.SYSCOLUMNS')
但是下面的语句会产生错误:
SELECT * FROM OPENQUERY(JTEST, 'Select * from QSYS2.SYSCOLUMNS FETCH FIRST 10 ROWS ONLY')
错误
链接服务器“JTEST”的 LE DB 提供程序“IBMDA400”返回消息 “SQL0199:不需要关键字 FETCH。有效标记:FOR WITH ORDER 联盟优化。原因 。 . . . . : 关键字 FETCH 不是预期的 这里。在关键字 FETCH 中检测到语法错误。部分名单 有效令牌的数量为 FOR WITH ORDER UNION OPTIMIZE。此列表假设 该语句在意外关键字之前是正确的。错误 可能在语句的前面,但语句的语法似乎 到此为止有效。恢复 。 . . : 检查 SQL 在指定关键字的区域中声明。冒号或 SQL 可能缺少分隔符。 SQL 要求对保留字进行分隔 当它们被用作名称时。更正 SQL 语句并尝试 再次请求。”。消息 7321,级别 16,状态 2,行 1 发生错误 在准备查询“Select * from QSYS2.SYSCOLUMNS FETCH FIRST 10 ROWS ONLY" 用于针对 OLE DB 提供程序 "IBMDA400" 执行 链接服务器“JTEST”。
我认为这是因为这个版本的 DB2 不支持 FETCH FIRST X ROWS ONLY?但是这个版本有没有办法只选择有限的记录集呢?
【问题讨论】:
标签: sql sql-server-2008 db2 linked-server openquery