我有一个从Server 2008 R2到使用OLE DB提供程序"IBMDA400“的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')
错误
LE提供程序"IBMDA400“用于链接服务器"JTEST”,返回消息"SQL0199:关键字FETCH不期望“。有效令牌:用于使用订单联合优化。原因。。。。。:此处不需要关键字FETCH。在关键字提取时检测到语法错误。有效令牌的部分列表用于。此列表假设语句在意外关键字之前是正确的。错误可能在语句的前面,但是语句的语法在这一点上似乎是有效的。恢复正常。。。::检查指定关键字区域中的SQL语句。可能缺少冒号或SQL分隔符。SQL要求保留字在用作名称时被分隔。更正SQL语句,然后重试请求。“。Msg 7321,级别16,状态2,第1行在准备查询“从QSYS2.SYSCOLUMNS只获取前10行”时发生错误,以便针对链接服务器"JTEST“的OLE DB提供程序"IBMDA400”执行。
我认为这是因为在这个版本的DB2中只支持先取X行吗?但是,在这个版本中是否有选择有限记录集的方法?
发布于 2013-06-01 19:52:42
first子句仅能从V5R1 OS400版本中工作。V4R5M0太老了
有一个解决办法:选择* from (
选择syscolumns.*,row_number() over()作为系统列中的nre
(由COLUMN_NAME命令)作为列
其中nre<10
你可以试试
DEpe
https://stackoverflow.com/questions/16858325
复制相似问题