無法直接升級的物件
- 交叉表查詢
- 含
DISTINCTROW 的查詢
- 所有隱藏物件
- 參數化表單查詢 (表單參數無法正確傳遞)
- Pass-Through 查詢
- SQL DDL 查詢 (
CREATE/ALTER/DROP TABLE)
- Jet 安全性 (需改用 Windows 驗證或 SQL Server 登入)
常見遷移陷阱與對策
1. 日期範圍不相容
- Access:100-01-01 ~ 9999-12-31
- SQL Server:1753-01-01 ~ 9999-12-31
- 對策:遷移前掃描並修正早於 1753 年的日期,或改用
DATETIME2 (SQL Server 2008+)。
2. 表單控制查詢失效
Access 允許查詢直接參考表單控制項 (如 [Forms]![DateFilter]![DateFrom]),SQL Server 不支援。
- 對策:改用預存程序 + 參數化查詢,從應用層傳入參數值。
3. 交叉表查詢轉換
Access TRANSFORM ... PIVOT 語法 SQL Server 無對應功能。
- 對策:使用
PIVOT 運算子 (SQL Server 2005+) 或在應用層 (PHP/C#) 進行行轉列。
4. 文字/備註欄位長度
Access Memo → SQL Server NVARCHAR(MAX);Text(255) → NVARCHAR(255)。
遷移最佳實踐流程
- 評估:運行「SQL Server 遷移小幫手 (SSMA)」掃描相容性報告。
- 前處理:修正不支援物件、清理資料、轉換查詢為 View/SP。
- 試遷移:在測試環境完整遷移,驗證應用功能。
- 效能調校:重建索引、更新統計資訊、調整填滿因子。
- 正式剪線:切換連線字串,啟用 SQL Server 安全性模型。