本文介绍了尝试使用OPENQUERY通过sql server linked server从DB2(V4R5M0)中选择x行时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个从SQL Server 2008 R2的链接服务器到使用OLE DB提供程序IBMDA400的DB2数据库(V4R5M0)

I have a Linked Server from SQL Server 2008 R2, to a DB2 Database (V4R5M0) using OLE DB provider "IBMDA400"

链接服务器检测

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')

但以下语句会产生错误:

But the following statement produces an error:

SELECT * FROM OPENQUERY(JTEST, 'Select * from QSYS2.SYSCOLUMNS FETCH FIRST 10 ROWS ONLY')

错误

这是因为这个版本的DB2不支持FETCH FIRST X ROWS ONLY?但是有没有办法在这个版本中只选择一个有限的记录集?

I think it's because FETCH FIRST X ROWS ONLY is not supported in this version of DB2? But is there any way of selecting only a limited record set in this version?

推荐答案

不需要FETCH FIRST需要ORDER BY吗?否则,它会得到哪些10行?

Wouldn't FETCH FIRST need an ORDER BY? Otherwise, which 10 rows would it get?

就我在DB2中可以看到SQL文档,它是支持当前和较旧的版本,虽然它没有声明(并且不清楚)如果ORDER BY是必须的FETCH FIRST

As far as I can see in the DB2 SQL docs, it is supported on current and older versions, although it doesn't state (and it not clear) if ORDER BY is mandatory with FETCH FIRST

这篇关于尝试使用OPENQUERY通过sql server linked server从DB2(V4R5M0)中选择x行时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-13 22:58