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 UNION OPTIMIZE。原因 . . . . : The keyword FETCH was not expected here. A syntax error wasキーワード FETCH で検出されました。有効なトークンの部分的なリストは、FOR WITH ORDER UNION OPTIMIZE です。このリストは、ステートメントが予期しないキーワードまで正しいことを前提としています。エラーはステートメントの前にある可能性がありますが、ステートメントの構文は有効なようですここまで. 回復. . . : 指定されたキーワードの領域の SQL ステートメントを調べます. コロンまたは SQL 区切り文字が欠落している可能性があります. SQL では、名前として使用される予約語を区切る必要があります. SQL ステートメントを修正してください.リクエストを再試行してください。」メッセージ 7321、レベル 16、状態 2、
このバージョンの DB2 では FETCH FIRST X ROWS ONLY がサポートされていないためだと思いますか? しかし、このバージョンで限られたレコード セットのみを選択する方法はありますか?