Access 資料庫隨業務成長常遭遇 2GB 檔案大小限制、並發效能瓶頸、安全性不足等問題,升級至 SQL Server 成為必然選擇。雖然 Access 內建「升級精靈」,但 SQL Server 的資料轉換服務 (DTS) 提供更強大的轉換控制與自動化能力。本文詳細比較兩者並示範 DTS 遷移實戰。
| 特性 | Access 升級精靈 (AUW) | DTS |
|---|---|---|
| 運作位置 | Access 內部 | SQL Server 端 (匯入模式) |
| 資料流向 | Access → 推送到 SQL Server | SQL Server ← 從 Access 拉取 |
| 欄位屬性修改 | 不支援匯入時修改 | 支援 匯入期間變更資料類型、長度、預設值 |
| 查詢篩選匯入 | 不支援 | 支援 撰寫查詢限制匯入資料範圍 |
| 前端連結保留 | 支援 自動將 Access 前端連結到 SQL Server | 不支援 (僅匯入資料) |
| 自動化/排程 | 弱 | 強 (DTS 套件可排程、命令列執行) |
| 錯誤處理/記錄 | 基本 | 完整 (每步驟成功/失敗/行數記錄) |
企業管理器 → 右鍵資料庫 → 「所有工作」 → 「匯入資料」
Admin (預設),密碼若有則填入(local) 或實際伺服器名稱對每個資料表點擊「轉換」按鈕,可調整:
INT IDENTITY(1,1);Yes/No → BIT NOT NULL;Memo → NVARCHAR(MAX)SELECT ... WHERE ... 只遷移特定資料IDENTITY(1,1) 屬性BIT NOT NULL,確認業務邏輯相容 (Access -1/0 vs SQL 1/0)Date(), Now() → SQL GETDATE();DateAdd 語法不同-- 全域變數設定
GlobalVariables("SourceMDB").Value = "D:\Data\Source.mdb"
GlobalVariables("TargetDB").Value = "TargetDB"
-- ActiveX Script 工作動態設定連接
Function Main()
DTSGlobalVariables("SourceConnStr").Value = _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
DTSGlobalVariables("SourceMDB").Value & ";"
Main = DTSTaskExecResult_Success
End Function
[資料抽取] → 成功 → [轉換/載入]
↓ 失敗
[記錄錯誤到 Log 表] → [發送警示郵件] → [停止/繼續]
Nz, IIf, DLookup, DateDiff)