前言
許多開發者熟悉 Access 開發,但隨著系統規模擴大,需要遷移至 SQL Server 2000。本文詳細記錄 Access 2000 轉換至 SQL Server 2000 的完整操作流程,並針對轉換後常見的字段屬性變更、數據類型差異等問題提供解決方案。
轉換前提條件
- 本文以 Access 2000 與 SQL Server 2000 互轉為例
- 操作前**務必備份原 Access 數據庫**(.mdb 文件)
- 其他版本組合未測試,但原理相通,可嘗試調整
詳細操作步驟
第一階段:建立 ODBC 數據源
- 打開「控制台」→「管理工具」→「數據源 (ODBC)」
- 在「系統 DSN」或「用戶 DSN」頁籤點擊「新增」
- 選擇「Driver do Microsoft Access (*.mdb)」,點擊「完成」
- 在彈出窗口中:
- 「數據源名稱」:自定義,如
ABC
- 「說明」:選填
- 點擊「選擇」,定位到目標 .mdb 文件並選中
- 確定完成建立
第二階段:SQL Server 2000 導入操作
- 打開 SQL Server 2000 企業管理器
- 右鍵「資料庫」→「新建資料庫」,名稱同為
ABC(或自定義)
- 右鍵新建資料庫 →「所有任務」→「導入數據」,啟動 DTS 導入/導出向導
- 點擊「下一步」進入數據源選擇:
- 數據源:選擇「Driver do Microsoft Access (*.mdb)」
- 用戶/系統 DSN:選擇剛建立的
ABC
- 目的地配置:
- 目標伺服器:通常選「(local)」本機,亦可輸入網絡伺服器地址
- 驗證模式:推薦「使用 SQL Server 驗證」(便於 Web 應用),填入
sa 及密碼
- 目標資料庫:選擇剛建立的
ABC
- 選擇「從數據源複製表和視圖」,點擊「下一步」
- 表選擇:點擊「全選」勾選所有表
- DTS 選項:勾選「立即執行」,連續點擊「下一步」→「完成」
- 觀察執行結果:所有表前出現綠色勾號表示成功;紅色叉號表示該表導入失敗,需回查操作
轉換後必須處理的三大問題
1. 自動編號字段 → 需手動設為標識列
Access 的「自動編號」轉換後變為普通非空字段,**不會自動成為標識列**。必須手動修改:
- 打開企業管理器,展開資料庫 → 表 → 設計目標表
- 選中原自動編號字段,屬性面板中將「標識」設為「是」
- 「標識種子」= 1,「標識增量」= 1
2. 是/否字段 → 轉為 bit 類型需調整
Access 的「是/否」類型轉換後變為非空的 bit 類型,但業務邏輯可能需要允許 NULL 或不同預設值,需根據實際業務手動調整字段屬性。
3. 日期/時間函數差異
Access 與 SQL Server 的日期時間函數**存在顯著差異**,常見對照:
| 功能 | Access 語法 | SQL Server 語法 |
| 當前日期時間 | Now() | GETDATE() |
| 日期差值 | DateDiff(interval, date1, date2) | DATEDIFF(datepart, startdate, enddate) |
| 日期加減 | DateAdd(interval, number, date) | DATEADD(datepart, number, date) |
| 日期部分提取 | Year()/Month()/Day() | DATEPART(year|month|day, date) |
| 格式化輸出 | Format(date, format) | CONVERT(varchar, date, style) |
應用層所有涉及日期運算的 SQL 語句、預存程序、視圖均需逐一排查修正。
經驗提示
- 導入前在 Access 端先清理無效數據、修正錯誤數據,減少轉換後清洗工作量
- 大量數據建議分批導入,避免單次事務過大導致日誌暴漲
- 導入後務必執行
DBCC CHECKDB 驗證數據完整性
- 保留原 Access 檔案至少一段時間,作為回滾備份
作者 QQ:310575,歡迎交流探討。下一篇將分享 SQL Server 2000 反向轉 Access 2000 的經驗。