本文以 SSMS 圖形化介面示範 SQL Server 2008 資料庫**完整備份**至 .bak 檔案,以及從 .bak **還原**至新/現有資料庫的完整操作流程,適用於遷移、測試環境建立、災難復原演練。
D:\Backup\MyDB_Full_20240115.bak)


.bak)。



| 問題 | 原因與解決 |
|---|---|
| 還原報錯「資料庫正在使用中」 | 設定目標資料庫為 SINGLE_USER WITH ROLLBACK IMMEDIATE 或 SSMS 選項頁勾選「關閉現有連線」。 |
| 權限不足無法備份/還原 | 使用 sa 或 sysadmin 角色帳號操作;Windows 驗證帳號需具備備份操作員權限。 |
| .bak 檔案過大 | 啟用備份壓縮 (Enterprise/Standard 2008R2+) 或分割備份至多個檔案 (條狀備份)。 |
| 跨版本還原 | 支援**向上相容** (2008 → 2012/2014/2016/2019);**不支援向下相容** (2012 → 2008)。 |
| 定期自動化備份 | 使用維護計畫 / SQL Server Agent 作業 / T-SQL 腳本 + 排程,設定完整/差異/記錄備份鏈。 |
-- 完整備份
BACKUP DATABASE [MyDB]
TO DISK = N'D:\Backup\MyDB_Full_20240115.bak'
WITH NOFORMAT, NOINIT, NAME = N'MyDB-Full Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10, COMPRESSION;
GO
-- 還原 (新資料庫)
RESTORE DATABASE [MyDB_Restore]
FROM DISK = N'D:\Backup\MyDB_Full_20240115.bak'
WITH FILE = 1,
MOVE N'MyDB' TO N'D:\SQLData\MyDB_Restore.mdf',
MOVE N'MyDB_log' TO N'D:\SQLLog\MyDB_Restore.ldf',
NOUNLOAD, REPLACE, STATS = 5;
GO
掌握圖形化與腳本雙模式操作,確保備份還原流程在緊急情況下可靠執行。