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

SQL Server 2000 備份還原到 SQL Server 2005 完整圖文教學:關鍵在於「不要預先建立資料庫」

     編輯:關於SqlServer

前言:跨版本還原的核心差異

SQL Server 2000 還原習慣:先建立同名空資料庫 → 右鍵還原 → 覆蓋。
SQL Server 2005 還原 2000 備份:絕對不要預先建立資料庫,直接在「資料庫」節點右鍵選「還原資料庫」,由精靈建立新資料庫。預先建立會導致錯誤:「備份集中的資料庫備份與現有資料庫不同」。

一、錯誤重現:預先建立資料庫的後果

  1. SSMS → 新增資料庫 CN17006_db (同名)。
  2. 右鍵該資料庫 → 工作 → 還原 → 來源裝置 → 選擇 2000 .bak 檔。
  3. 點確定 → 錯誤:
    還原對於伺服器失敗... 備份集中的資料庫備份與現有 'CN17006_db' 資料庫不同。

錯誤訊息畫面

詳細錯誤

二、正確步驟:直接在「資料庫」節點還原

  1. 刪除 已建立的同名資料庫 (若有)。
  2. 在 物件總管 中,右鍵 「資料庫」節點 (非特定資料庫) → 選擇 「還原資料庫」。
    右鍵資料庫節點選還原
  3. 一般 頁籤:
    ▸ 來源:裝置 → 瀏覽 → 加入 2000 .bak 檔 (確認副檔名 .bak/.trn)。
    ▸ 目的地:輸入目標資料庫名稱 (如 CN17006_db),不需與原名相同。
    還原資料庫一般頁籤
  4. 勾選備份集前的 「還原」核取方塊。
    勾選還原核取方塊
  5. 點擊 確定,還原成功。

三、進階選項與常見問題

1. 檔案重新定位 (WITH MOVE)

  • 檔案 頁籤 → 勾選 「將資料庫檔案重新定位為」。
    ▸ 邏輯檔名對應新實體路徑 (如 D:\Data\CN17006_db.mdf, L:\Log\CN17006_db.ldf)。
  • 適用於:磁碟配置不同、還原到不同伺服器、避開系統碟。

2. 還原選項

  • 還原選項 頁籤:
    ▸ 覆蓋現有資料庫 (WITH REPLACE):若目標資料庫已存在需強制覆蓋。
    ▸ 保留複寫設定、限制存取、提示還原前/後 視需求勾選。

3. 路徑錯誤:備份檔記錄的原始路徑不存在

路徑錯誤畫面

  • 錯誤訊息提示找不到 C:\Program Files\Microsoft SQL Server\MSSQL\Data\。
  • 解決:將 .bak 檔複製到該路徑,或在「檔案」頁籤重新定位邏輯檔案到實際存在的路徑。

四、T-SQL 等效指令 (腳本化部署)


RESTORE DATABASE CN17006_db
FROM DISK = 'E:\Backups\CN17006_db_2000.bak'
WITH
    MOVE 'CN17006_db_Data' TO 'D:\Data\CN17006_db.mdf',
    MOVE 'CN17006_db_Log'  TO 'L:\Log\CN17006_db.ldf',
    REPLACE,          -- 覆蓋既有
    STATS = 10;       -- 進度百分比
  • 邏輯檔名可用 RESTORE FILELISTONLY FROM DISK = '...' 查詢。
  • REPLACE 對應 UI 的「覆蓋現有資料庫」。

五、關鍵差異總結表

面向 SQL Server 2000 SQL Server 2005 還原 2000 備份
預先建立資料庫 必須 建立同名空庫 嚴禁 預先建立,由還原精靈建立
目標資料庫名稱 必須與原備份資料庫同名 可任意指定,不需與原名相同
操作入口 企業管理器 → 右鍵特定資料庫 → 還原 SSMS → 右鍵「資料庫」節點 → 還原資料庫
檔案重新定位 不支援 (需手動移動檔案後附加) 支援 UI 與 T-SQL MOVE

結語

SQL Server 2000 備份還原到 2005 的黃金法則:不要預先建立資料庫,直接在「資料庫」節點右鍵選「還原資料庫」。搭配檔案重新定位、覆蓋選項、T-SQL 腳本化,即可平滑完成跨版本遷移。若遇路徑錯誤,善用「檔案」頁籤重新定位邏輯檔案至實際磁碟路徑。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved