Access 開發者常因效能、安全性、穩定性考量升級至 SQL Server。本文系統比較兩者架構差異、工具對應、資料型別對照、擴充性與查詢最佳化,助您無縫遷移。
| 面向 | Access (Jet) | SQL Server |
|---|---|---|
| 架構類型 | 檔案式、用戶端處理 | 用戶端/伺服器、伺服器端處理 |
| 引擎運作 | 開啟 .mdb 才啟動,關閉卸載 | 服務持續運行,管理 .mdf/.ldf |
| 查詢處理 | 全量資料傳至用戶端排序/篩選 | 伺服器端篩選,僅回傳結果集 |
| 並發上限 | 255 (實務 20+ 即效能下降) | 受限於記憶體,支援企業級並發 |
| 資料庫上限 | 2 GB | 1,048,516 TB (跨多裝置) |
| 交易日誌 | 無 | 完整記錄,支援時間點還原 |
| 檔案架構 | 單一 .mdb | .mdf (主) + .ldf (記錄) + .ndf (次要) |
| Access 功能 | SQL Server 對應工具 |
|---|---|
| 資料庫視窗/查詢設計器 | 企業管理員 (設計/管理) + 查詢分析器 (查詢/調試) |
| 匯入/匯出精靈 | 資料轉換服務 (DTS) - 功能更強、支援轉換 |
| 無對應 | SQL Server 事件探查器 (效能監控/調優神器) |
| VBA 程式碼 | T-SQL 預存程序/函數/觸發器 + Visual Studio .NET |
| Access (Jet) | SQL Server | 備註 |
|---|---|---|
| Text | char/nchar/varchar/nvarchar | |
| Memo | text/ntext | |
| AutoNumber | int + IDENTITY | Access 開始編輯即產生;SQL Server 存檔才產生 |
| Yes/No | bit | |
| OLE Object | image | |
| Hyperlink | 無對應 | 應用層處理 |
| Replication ID | uniqueidentifier |
| Access | SQL Server 對應 | 關鍵優勢 |
|---|---|---|
| Select 查詢 | VIEW / 預存程序 | 視圖可建立索引 (Indexed View) 大幅提升效能 |
| Crosstab 查詢 | 預存程序 + 暫存表 / 分析服務 (OLAP) | OLAP 多維資料集支援動態複雜報表 |
| Make Table | SELECT INTO | |
| Update/Append/Delete | UPDATE/INSERT/DELETE 陳述式 | 支援 JOIN、子查詢、CASE 運算式 |
| 參數查詢 | 預存程序參數 / 函數參數 | 編譯後執行計畫快取,效能極佳 |
#temp, ##global):記憶體中處理,避免重複 JOIN@table_var):比暫存表更輕量,無鎖定/記錄負擔Access 習慣:SELECT * FROM Customers → 全表傳回用戶端
SQL Server 最佳化:SELECT * FROM Customers WHERE CustomerID = 'C00010' → 伺服器端篩選,僅回傳 1 筆
原則:只取需要的欄位、只取需要的列、用 WHERE 而非用戶端篩選
| Access | SQL Server |
|---|---|
| 壓縮修復 (不保證) | 三種復原模式:簡單/完整/大量記錄 |
| 還原備份 (需重輸資料) | 線上備份 (不中斷服務)、時間點還原 |
| 第三方修復工具 (昂貴、風險) | 交易記錄檢視器 (如 Lumigent Log Explorer) 手動復原 |
遷移至 SQL Server 不僅是換引擎,更是架構思維轉型:從檔案式單機轉為用戶端/伺服器、從用戶端處理轉為伺服器端運算、從被動修復轉為主動可控。善用 T-SQL 進階功能、Indexed View、暫存表/表變數、UDF/UDDT,將釋放資料庫真正潛能。