SQL Server 透過 連結伺服器 機制,使用 Microsoft OLE DB Provider for ODBC Drivers 搭配 VFP ODBC 驅動程式,實現對 VFP 資料庫 (.DBC 資料庫容器或 .DBF 自由資料表) 的即時查詢與異動。
控制台 → 系統管理工具 → 資料來源 (ODBC) → 系統 DSN → 新增 → 選擇 Microsoft Visual FoxPro Driver (*.DBF) → 設定:
VFPTEST (自訂)Visual FoxPro Database (*.DBC) 或 Free Table Directory (*.DBF).DBC 檔案或 .DBF 目錄完成後按「測試」確認連線成功。
企業管理器 → 安全性 → 連結伺服器 → 右鍵新增:
LINK_VFP (自訂)VFPTEST (步驟1的 DSN 名稱)UID=username;PWD=password (VFP 資料庫帳號密碼,若無可留空)企業管理器 → 連結伺服器 → LINK_VFP → 資料表,右視窗顯示所有 VFP 資料表。實際查詢需在查詢分析器使用四段式名稱:
SELECT * FROM [LINK_VFP]..[VFP使用者].[資料表名]
-- 範例
SELECT * FROM [LINK_VFP]..[dbo].[Customer]
.. 代表無資料庫名稱 (VFP 無資料庫層級),dbo 為預設擁有者。
INSERT/UPDATE/DELETE 同樣支援,需 VFP 資料表有主鍵/候選鍵 (ODBC 驅動限制)。SELECT * FROM LocalTable t JOIN [LINK_VFP]..[dbo].[VFPTable] v ON t.Id = v.IdSELECT * FROM OPENQUERY(LINK_VFP, 'SELECT * FROM Customer WHERE Country=''USA''') 將過濾下推至 VFP 端執行,效能更佳。| 現象 | 可能原因 | 解決 |
|---|---|---|
| 「找不到資料表」 | VFP 使用者名稱非 dbo | 四段式名稱使用正確擁有者名 |
| 查詢極慢 | 大量資料未下推 | 使用 OPENQUERY 或建立 VFP 索引 |
| 中文亂碼 | 字碼頁不匹配 | DSN 設定正確字碼頁 (如 CP950),或連接字串加 CODEPAGE=950 |
| 更新失敗 | VFP 表無主鍵/唯一索引 | 為 VFP 表建立主鍵 (CDX) |