我有以下查詢鏈接服務器,我必須與之交談。SQL:OPENQUERY不返回所有行
選擇 * FROM
OPENQUERY(DWH_LINK, 'SELECT * FROM TABLEA')
它通常會返回大多數的數據,但有一些行?
的linkeds服務器是從Oracle客戶端
這是任何人都遇到了W/OPENQUERY一個問題來了嗎?
我有以下查詢鏈接服務器,我必須與之交談。SQL:OPENQUERY不返回所有行
選擇 * FROM
OPENQUERY(DWH_LINK, 'SELECT * FROM TABLEA')
它通常會返回大多數的數據,但有一些行?
的linkeds服務器是從Oracle客戶端
這是任何人都遇到了W/OPENQUERY一個問題來了嗎?
這似乎與底層提供者功能有關,而其他人也遇到了這種類似的大小/行限制。一種可能的解決方法是實現一個迭代/循環查詢,其中內置了一些過濾器來撤回一定數量的行。有了oracle,我認爲這可能是使用rownum(不太熟悉oracle)。
因此,像
--Not tested sql, just winging it syntax-wise
SELECT * FROM OPENQUERY(DWH_LINK, 'SELECT * FROM TABLEA where rownum between 0 AND 500')
SELECT * FROM OPENQUERY(DWH_LINK, 'SELECT * FROM TABLEA where rownum between 500 AND 1000')
SELECT * FROM OPENQUERY(DWH_LINK, 'SELECT * FROM TABLEA where rownum ...')
BOL: link 這是受OLE DB提供程序的能力。雖然查詢可能會返回多個結果集,但OPENQUERY只返回第一個結果集。
我有完全相同的問題。
根本原因是您已經使用ODBC而不是OLE DB設置了鏈接服務器。
以下是我固定它:
現在轉到「安全」選項卡,然後單擊上一個單選按鈕「使用此安全上下文:」並輸入用戶名&密碼爲您的連接
這應該是它!
真棒 - 這是我正是問題。我不能相信ODBC驅動程序會出現這樣的錯誤,但是這種情況,現在它已被糾正:) – SqlRyan 2013-09-19 17:18:53
我們也遇到了這個問題,這是決議。爲了增加我們最初的困惑,SELECT *展示的FETCH FIRST行爲在WHERE子句使用7列中的3列時顯示出來......使用其他4列或在沒有WHERE的情況下運行,返回了預期結果。 – 2014-02-21 14:25:31
切換(從ODBC驅動程序的Microsoft OLE DB提供程序)到** Oracle OLE DB **提供程序工作。謝謝。確保您匹配x64 - >(64位Oracle數據訪問組件(ODAC)下載)到SQL服務器。謝謝。 – Finkel 2016-02-03 17:57:46
我有使用Oracle 10即時客戶端和ODBC的相同問題。我在連接到Oracle 10gR2數據庫時使用了此客戶端。我在微軟的支持下打開了一張票,他們建議使用Oracle 11即時客戶端。驚喜!卸載10g即時客戶端,安裝11g即時客戶端並重新啓動解決了問題。
肯
有另一種方式來訪問數據的其他鏈接的服務器比使用OPENQUERY – Bill 2010-12-15 21:44:26