July
19th,
2016
今天在做 64 位元的 SQL Server 使用 DB Link 到 SQL Server 2000 時,可以正確的連接到,可是在做查詢時,卻出現下面這種錯誤訊息:
無法為連結伺服器 TestDBName 的 OLE DB 提供者 "TestDBProvider" 取得結構描述資料列集 "DBSCHEMA_TABLES_INFO"。提供者支援介面,但在使用時傳回失敗碼。
根據 MSDN 當您嘗試從 64 位元 SQL Server 2005 用戶端對連結 32 位元 SQL Server 2000 伺服器執行分散式查詢時,可能會收到錯誤訊息,從這篇文章可以知道,在 64 位元的 SQL Server 中連結 32 位元 SQL Server 2000 進行分散式查詢時,若系統預存程序沒有升級為 SQL Server 2000 SP3 或 SQL Server 2000 SP4,就會出現此徵狀。
解決步驟
- SQL Server 2000 須更新至 SP4
- 在 SQL Server 2000 中開啟 Query Analyzer
- 在 master 資料庫上執行 SP4 所附的
instcat.sql
檔案- 檔案應位於
$(Program Files)\Microsoft SQL Server\MSSQL\Install
資料夾之下 - 如果找不到,使用檔案搜尋應該就可以找到了(像我手邊的機器,SQL Server 就裝在 D 槽…)
- 如果還是找不到,可以參考完整程式碼,我放了一份在 Gist 裡
- 檔案應位於
- 執行完畢後,64 位元的 SQL Server 就可已使用 Query Analyzer 做查詢
code
詳請至 Github Gist poychang/instcat.sql
參考資料: