我正在鏈接服務器(IBM DB2)上運行查詢,我這樣做的原因是因爲執行簡單查詢需要很長時間。下面 是兩個查詢,第一個成功地運行,因此,問題不是與查詢無法在鏈接的服務器上運行openquery
select top 10 * from [AS400TS_LNK].[TEST].[AUPRDDBF].CONTACCT where actrno = '8971'
select * from openquery(AS400TS_LNK, 'select * from [TEST].[AUPRDDBF].CONTACCT where actrno = ''8971''')
和錯誤,我得到在運行打開查詢
OLE DB提供程序「DB2OLEDB」爲鏈接服務器「AS400TS_LNK」返回消息「令牌* N無效。有效令牌:* N。SQLSTATE:42601,SQLCODE:-104」。
消息7321,級別16,狀態2,行1
發生錯誤,同時準備查詢 「SELECT * FROM [AS400TS_LNK]。[測試]。[AUPRDDBF] .CONTACCT其中actrno = '8971'」針對鏈接服務器「AS400TS_LNK」的OLE DB提供程序「DB2OLEDB」執行。
只是胡亂猜測這裏,但很容易測試。嘗試從'openquery'語句中刪除方括號... – user1429080
正如@ user1429080所提到的,使用方括號來引用標識符是SQL Server的一件事;發送標準SQL到遠程服務器,必要時使用雙引號標識(這裏不是這種情況)。 – mustaccio