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

SQL Server 企業管理員/SSMS 還原資料庫 (BAK) 完整圖文步驟與進階選項

     編輯:關於SqlServer

    適用工具

    • SQL Server 2000:企業管理員
    • SQL Server 2005+:SSMS (Management Studio)

    標準還原流程 (SSMS)

    1. 物件總管 → 右鍵 資料庫 → 還原資料庫... (或右鍵現有資料庫 → 工作 → 還原 → 資料庫)。
    2. 來源:選 裝置 → ... → 新增 → 選取 .bak 檔 → 確定。
      備份集清單會顯示該檔內的完整/差異/記錄備份組,勾選需還原者 (通常最新完整 + 後續差異/記錄)。
    3. 目的地:資料庫名稱 (新建或覆蓋既有)。
    4. 檔案 頁籤:
      • 將資料庫檔案還原為:調整邏輯檔名對應的實體路徑 (MDF/LDF)。
      • 若目標機器路徑不同,**必須修改**,否則報錯「找不到路徑」或「檔案已存在」。
    5. 選項 頁籤:
      • 覆蓋現有資料庫 (WITH REPLACE):覆蓋同名資料庫。
      • 復原狀態:
       - RESTORE WITH RECOVERY (預設):還原完成上線,無法再套用記錄備份。
       - RESTORE WITH NORECOVERY:保持還原中,可接續套用差異/記錄備份。
       - RESTORE WITH STANDBY:唯讀待命,可查詢並接續記錄。
      • 關閉現有連線:勾選即對應 ALTER DATABASE SET SINGLE_USER WITH ROLLBACK IMMEDIATE。
    6. 按 確定 執行,觀察進度條。

    常見錯誤與解決

    錯誤原因解決
    找不到路徑 / 檔案已存在還原路徑與目標機器不符「檔案」頁籤修正實體路徑
    資料庫正在使用中有作用中連線勾選「關閉現有連線」或手動 ALTER DATABASE SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    備份集持有不同的資料庫 GUID嘗試還原至不同名稱資料庫但未勾選 REPLACE勾選「覆蓋現有資料庫」或先刪除目標庫
    記錄備份無法套用上一步驟選了 WITH RECOVERY完整備份選 NORECOVERY,依序套用差異/記錄,最後一步 RECOVERY
    版本不相容高版本備份還原至低版本不可行,需腳本遷移

    進階:T-SQL 指令還原 (適合自動化/大型資料庫)

    -- 1. 查看備份集內容
    RESTORE HEADERONLY FROM DISK = 'D:\Backup\DB_Full.bak';
    RESTORE FILELISTONLY FROM DISK = 'D:\Backup\DB_Full.bak';
    
    -- 2. 還原 (範例:異地路徑、覆蓋、NORECOVERY 接續記錄)
    RESTORE DATABASE [TargetDB]
    FROM DISK = 'D:\Backup\DB_Full.bak'
    WITH
        MOVE 'LogicalData' TO 'D:\Data\TargetDB.mdf',
        MOVE 'LogicalLog'  TO 'L:\Log\TargetDB.ldf',
        REPLACE,               -- 覆蓋
        NORECOVERY,            -- 待套用記錄
        STATS = 5;             -- 進度 5% 回報
    
    -- 3. 套用差異備份
    RESTORE DATABASE [TargetDB] FROM DISK = 'D:\Backup\DB_Diff.bak' WITH NORECOVERY, STATS=5;
    
    -- 4. 套用記錄備份 (依序)
    RESTORE LOG [TargetDB] FROM DISK = 'D:\Backup\DB_Log_1.trn' WITH NORECOVERY;
    RESTORE LOG [TargetDB] FROM DISK = 'D:\Backup\DB_Log_2.trn' WITH RECOVERY; -- 最後一筆 RECOVERY 上線

    結語

    圖形介面適合偶發操作;自動化、跨機器、大型資料庫請使用 T-SQL 腳本並納入部署流程。關鍵在於 **檔案路徑重新導向**、**復原狀態正確串接**、以及 **事先驗證備份集 (HEADERONLY/FILELISTONLY/VERIFYONLY)**。

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