| 選項 | 設定值 |
| 連結伺服器名稱 | LINK_MYSQL(自訂) |
| 伺服器類型 | 其他資料來源 |
| 提供者 | Microsoft OLE DB Provider for ODBC Drivers(關鍵) |
| 資料來源 | 步驟 2 建立的 DSN 名稱(MySQL_Link) |
| 提供者字串 | 留空 |
| 目錄 | 留空 |
安全性頁面:選擇「使用此安全性內容建立」,輸入 MySQL 帳號密碼
伺服器選項:RPC、RPC Out 設為 True,其餘預設
驗證與常用查詢語法
測試連線
右鍵連結伺服器 → 測試連線,或執行:
SELECT * FROM OPENQUERY(LINK_MYSQL, 'SELECT VERSION()')
查詢資料
-- OPENQUERY 方式(推薦,遠端過濾)
SELECT * FROM OPENQUERY(LINK_MYSQL, 'SELECT id, name FROM users WHERE status = 1')
-- 四部分命名方式(本地過濾,效能較差)
SELECT * FROM LINK_MYSQL.erp_db.dbo.users WHERE status = 1
異質資料寫入
-- INSERT OPENQUERY
INSERT OPENQUERY(LINK_MYSQL, 'SELECT id, name, pwd FROM users')
VALUES (8, '齊達內', '99999')
-- 或使用 EXECUTE AT
EXECUTE ('INSERT INTO users (id, name, pwd) VALUES (9, ''C羅'', ''88888'')') AT LINK_MYSQL
常見問題排查
- 錯誤 7303/7314:驅動程式位元數不符(SQL Server 64 位需裝 64 位 ODBC)
- 中文亂碼:DSN 選 Unicode Driver、MySQL 表/欄位用 utf8mb4、連接字串加
CHARSET=utf8mb4
- 分散式交易失敗:啟用 MSDTC、開放 135 埠、設定「不需要驗證」
- 效能差:優先用 OPENQUERY 下推過濾、建立遠端索引、避免大量資料四部分命名查詢
進階:遷移至較新架構
SQL Server 2016+ 建議改用 PolyBase 或 Linked Server with ODBC Driver 17/18,支援更完整的資料類型對應與推斷統計資料。
- 上一篇文章: SQL Server 暫存表 vs 表變數:效能抉擇完全指南
- 下一篇文章: SQL Server 多列合併為單一字串:STUFF + FOR XML PATH 最佳實踐
Copyright ©
程式碼之家 All Rights Reserved