🧾SQL Server 備份失敗:媒體家族(media family)錯誤是什麼?一篇搞懂為什麼 .bak 備份檔不能用
一、這是一個「幾乎每個工程師都會遇到」的錯誤 如果你是軟體工程師、IT 或 MIS,只要有碰過 SQL Server,某一天你一定會遇到這個情境: 我只是想備份資料庫,為什麼 SQL Server 拒絕我? 系統跳出一個很長的錯誤訊息,大意是: 備份媒體與目前備份裝置設定不相容 很多人看到這裡會以為: 磁碟壞了 權限錯誤 SQL Server 壞了 資料庫損毀 其實都不是。 真正的原因只有一個: 你正在把「新的備份」寫進一個「舊規格的備份容器」。 而這個容器,就是 .bak 檔案。 二、先用一個生活比喻理解(超重要) 想像你有一個硬碟盒。 某天你用「雙硬碟 RAID」方式建立它(等於 2 個硬碟一起運作)。 後來你把其中一顆硬碟拔掉,只剩一顆, 然後你想把資料再存回去。 系統會說: 不行,這個盒子原本是 2 顆硬碟的結構,你現在只有 1 顆。 SQL Server 的 .bak 檔案也是一樣的概念。 三、什麼叫做 Media Family(媒體家族)? SQL Server 備份其實不是單純「存檔」。 它是一個 備份媒體容器(Backup Media Set) 。 一個備份可以有: 1 個檔案 2 個檔案 甚至 10 個檔案 例如: 工程師可能曾經做過這種備份: (以下為示意範例程式碼) 把資料庫同時寫入兩個備份檔 也就是說 一份備份,被拆成「兩個 .bak」。 這就叫: 多媒體備份(Striped Backup) 而 SQL Server 會在備份檔內寫入一個結構資訊: 「這個備份容器需要兩個媒體家族」 四、問題就出在這裡 之後某一天,你重新備份時,只使用一個檔案: 只備份到一個檔案 SQL Server 會檢查舊 .bak 的內部資訊,然後發現: 這個容器設計需要 2 個備份媒體,但你只提供 1 個。 所以它拒絕。 不是你權限錯誤 ...