📦 SQL Server 備份還原失敗全解析:為什麼 .bak 無法還原?工程師一步步帶你排錯
🧭 前言:為什麼
.bak 還原會這麼難?
如果你是第一次接觸 SQL Server,你可能會以為:
「既然是
.bak,不就是備份檔,按還原就好?」
但實務上,.bak
無法還原是非常常見的問題,而且錯誤訊息通常又長又難懂,讓人完全不知道該從哪裡開始。
這篇文章會用工程師的角度 + 白話說法,一步一步帶你了解:
-
為什麼
.bak可能無法還原 -
常見錯誤其實代表什麼意思
-
該怎麼正確備份與還原
-
新手最容易踩的地雷有哪些
🧩 第一關:.bak ≠
一定是「合法備份檔」
很多人不知道一件事:
不是所有副檔名叫
.bak的檔案,都是真正的 SQL Server 備份
SQL Server 的「合法備份」必須是用
BACKUP DATABASE 指令產生的。
如果你拿到的
.bak
是以下來源之一,就很可能會出問題:
-
直接複製資料夾
-
虛擬機快照(VM snapshot)
-
第三方工具匯出
-
備份時中斷、拷貝不完整
🔍 第二關:工程師第一個會做的檢查
專業工程師拿到 .bak,不會立刻還原,而是先做「檢查」。
概念上會做兩件事:
1️⃣ 檢查備份「是不是完整」
就像你拿到一個 ZIP 檔,會先確認能不能打開
2️⃣ 檢查裡面「包含哪些資料檔」
因為還原時,路徑幾乎一定要改
如果這一步就失敗,代表檔案本身就有問題,不是權限、不是電腦、不是你操作錯。
⚠️ 第三關:為什麼 SSMS 會說「未選取要還原的備份組」?
這是新手最常見、也最誤會的一個訊息。
實際意思是:
SQL Server 在這個檔案裡
👉 找不到「完整結束的備份資訊」
換句話說:
-
檔案存在
-
但備份「沒完成」
-
或檔案被截斷
這時候,不論你重試幾次、換幾台電腦、用什麼帳號,都不會成功。
🧠 第四關:權限不是你想的那樣
很多人以為:
「我是 Windows 管理員 / SQL 管理員,為什麼還會失敗?」
但 SQL Server 的行為其實是:
| 動作 | 真正執行的人 |
|---|---|
| 你在 SSMS 下指令 | 你 |
寫入 .bak 檔案
|
SQL Server 服務帳號 |
也就是說:
就算你是系統管理員,只要 SQL Server 服務帳號沒權限,還是會失敗
這就是為什麼你會看到類似:
-
存取被拒
-
無法建立備份裝置
-
OS error 5
📂 第五關:路徑不存在 = 必定失敗
另一個超常見錯誤是:
「系統找不到指定的路徑」
原因通常只有一個:
👉 你指定的資料夾根本不存在
SQL Server 不會自動幫你建立資料夾。
例如:
只要中間有一層不存在,備份或還原都會直接失敗。
✅ 正確的工程師做法(流程總結)
以下是專業工程師會遵守的標準流程:
✔ 在來源機器
-
使用正式備份指令產生備份
-
存在 SQL Server 預設備份目錄
-
確認備份「可被驗證」
-
再傳送檔案
✔ 在目標機器
-
先檢查備份結構
-
確認資料檔清單
-
使用
MOVE指定新路徑 -
還原完成後再開放使用
🧯 新手常見錯誤清單(快速對照)
| 問題 | 真正原因 |
|---|---|
.bak 無法還原
|
檔案不完整 |
| 顯示 INCOMPLETE | 備份未完成 |
| OS error 5 | 服務帳號沒權限 |
| OS error 3 | 資料夾不存在 |
| UI 灰掉不能選 | 備份結構不合法 |
🎯 結論:這不是你不會,是資訊太碎
SQL Server 的錯誤訊息對新手非常不友善,但只要你知道:
-
.bak必須是「合法備份」 -
權限是「服務帳號」
-
路徑一定要存在
其實每一個問題都有明確原因,而且都能被系統化解決。
✍️ 工程師一句話總結
SQL Server 的備份還原不是靠試,而是靠「驗證每一層假設」
如果你正在處理:
-
系統交接
-
客戶資料還原
-
舊機器資料搬遷
這套流程幾乎是必學基本功。
留言
張貼留言