首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 跨版本資料遷移完整指南:從 SQL 7.0 之前到 2005 及以後

     編輯:關於SqlServer

版本相容性鐵律

  • SQL 7.0 / 2000 / 2005 / 2008 / 2012 / 2014 / 2016 / 2017 / 2019 / 2022:支援**就地升級**、**備份/還原**、**附加/分離** 向上相容 (舊版備份→新版還原)。
  • SQL 6.5 / 6.0 / 4.21 及更早:**不支援直接備份還原或附加**。引擎架構、系統表結構、儲存格式均有根本性重寫 (7.0 重大重構)。

舊版本 (SQL 6.5 及之前) 遷移路徑

  1. 資料移轉 (Data Migration):在舊版伺服器建立 ODBC DSN,使用 **DTS (SQL 2000) / SSIS (2005+)** 封裝抽取→轉換→載入 (ETL) 至新版資料庫。
  2. BCP (大量複製程式):`bcp db.dbo.table out file.dat -c -T -S OldSrv` → `bcp newdb.dbo.table in file.dat -c -T -S NewSrv`。適合純資料大量移動,需自行處理結構建立。
  3. 腳本產生 + BCP:舊版 Enterprise Manager 產生結構腳本 → 新版執行建表 → BCP 導入資料。
若僅有舊版備份檔 (`.bak`),**必須**先還原至相同版本伺服器 (或安裝舊版),再走上述移轉流程。無捷徑可直接從舊版備份「跳躍」還原至新版。

SQL 7.0 及以後版本間遷移 (三大標準法)

方法一:備份/還原 (最常用、最完整)

-- 舊版
BACKUP DATABASE MyDB TO DISK = 'D:\Bak\MyDB.bak' WITH INIT, STATS=5;

-- 新版 (可跨版本還原,如 2000→2005→2019)
RESTORE DATABASE MyDB FROM DISK = 'D:\Bak\MyDB.bak'
WITH MOVE 'MyDB_Data' TO 'D:\Data\MyDB.mdf',
     MOVE 'MyDB_Log'  TO 'L:\Log\MyDB.ldf',
     REPLACE, STATS=5;
  • 保留所有物件、權限、統計資料、全文索引 (2005+)。
  • 還原後**必須**執行:`DBCC CHECKDB`、`UPDATE STATISTICS`、`ALTER DATABASE SET COMPATIBILITY_LEVEL` (視應用需求)。

方法二:附加/分離 (檔案層級移動,極快)

-- 舊版
EXEC sp_detach_db 'MyDB';
-- 複製 .mdf/.ldf 至新伺服器磁碟
-- 新版
EXEC sp_attach_db @dbname = 'MyDB',
    @filename1 = 'D:\Data\MyDB.mdf',
    @filename2 = 'L:\Log\MyDB.ldf';
  • 前提:資料庫**無使用中連線**、檔案系統權限正確 (服務帳號讀寫)。
  • 跨版本附加自動完成內部升級 (系統表轉換),不可逆。

方法三:產生腳本 + 資料匯入 (精細控制、跨版本結構調整)

  • SSMS → 右鍵資料庫 → 「工作」→「產生指令碼」→ 選「為目標版本編寫腳本」(如 SQL 2000/2005/2008)。
  • 新版執行腳本建立空結構 → 「匯入/匯出精靈」或 SSIS 導入資料。
  • 適用:需調整資料類型、移除舊版特有語法、分階段遷移。

系統資料庫遷移鐵律:不可跨版本還原/附加

  • `master`、`model`、`msdb`、`tempdb`、**不可**從舊版備份還原至新版,或直接附加舊版檔案。
  • 新版安裝會建立全新系統資料庫結構 (新系統表、新目錄檢視、新預存程序)。
  • 僅能**手工遷移**內容:登入/使用者 (sp_help_revlogin)、Agent 作業/警示/排程、備份/維護計劃歷程、連結伺服器定義等。

遷移後必做清單

  1. `DBCC CHECKDB (MyDB) WITH NO_INFOMSGS, ALL_ERRORMSGS;` 確保結構完整。
  2. 更新統計資料:`EXEC sp_updatestats;` 或 `UPDATE STATISTICS` 配合 `FULLSCAN`。
  3. 同步登入與使用者 (SID 映射):執行 `sp_change_users_login 'Auto_Fix', 'user'` 或 `sp_help_revlogin` 跨伺服器同步。
  4. 調整相容性等級:`ALTER DATABASE MyDB SET COMPATIBILITY_LEVEL = 130;` (視應用測試決定)。
  5. 重建/重組索引、啟用查詢存放區 (2016+)、驗證應用功能。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved