📦 SQL Server 備份一直顯示「正在執行查詢」?

一、問題背景:為什麼備份看起來「永遠跑不完」?

很多工程師(甚至資深工程師)都遇過這種情況:

在 SQL Server 裡執行資料庫備份
畫面只顯示:「正在執行查詢」
沒有百分比、沒有進度、也沒有錯誤

那它到底有沒有在跑?

對「剛接觸資料庫」的人來說,這個狀況會非常焦慮,因為你完全不知道該等、該停,還是該重來。


二、先講重點結論(給忙碌的人)

👉 畫面顯示「正在執行查詢」,不代表真的在備份
👉 真正的狀態,要看 SQL Server 內部,而不是看畫面
👉 有時候它卡在「開始前的檢查階段」,根本沒進入備份流程


三、為什麼 SQL Server 不會主動顯示進度?

這其實是設計問題,不是你的錯

在 SQL Server 裡,有兩種常見做法:

✅ 用圖形介面(右鍵 → 備份)

  • 會顯示百分比

  • 會跳出進度視窗

  • 對新手友善

⚠️ 用「查詢視窗」執行備份指令

  • 常常只顯示「正在執行查詢」

  • 沒有進度條

  • 沒有即時回饋

👉 但「沒有顯示」≠「沒有執行」


四、工程師真正判斷進度的方法(白話版)

💡 正確觀念

不要相信畫面,要相信資料庫本身

SQL Server 其實會在「系統內部表」記錄所有正在執行的工作,只是你要主動去查。


🛠 工程師常用的「內部狀態查詢」(概念版)

-- 查詢目前資料庫內部,是否有備份工作在執行 SELECT 工作編號, 執行類型, 完成百分比, 開始時間, 預估完成時間 FROM 系統內部執行清單 WHERE 執行類型 = '資料庫備份';

如果查詢結果是:

  • ✅ 有資料 + 百分比會變
    👉 真的在跑,放心等

  • ❌ 完全查不到
    👉 代表根本沒開始,畫面只是「假忙」


五、最常見的「卡住真兇」(超過 80% 都是它)

🚨 問題不是資料庫,而是「備份路徑」

很多人會這樣想:

「我指定一個電腦路徑,SQL Server 就會幫我存檔」


但實際上:

  • SQL Server 是用「服務帳號」在存檔

  • 不是用你登入電腦的帳號

  • 可能根本沒權限寫那個資料夾

常見狀況包括:

  • 資料夾不存在

  • 沒有寫入權限

  • 磁碟空間不足

  • 路徑是系統碟(風險最高)

👉 結果就是:
畫面卡住很久,最後才噴錯,或乾脆沒反應


六、專業工程師會怎麼做?

✅ 作法一:使用資料庫「官方預設備份目錄」

  • 不自己亂指定路徑

  • 使用系統已授權、已驗證的備份資料夾

  • 成功率最高

✅ 作法二:備份前先驗證環境

  • 確認磁碟空間

  • 確認服務帳號權限

  • 確認備份位置存在


七、那如果已經卡住了,該不該中斷?

✔️ 可以中斷的情況

  • 查不到任何備份進度

  • 系統內部沒有對應工作

  • 已經卡住很久(例如 20~30 分鐘)

❌ 不要中斷的情況

  • 百分比有在跑

  • 只是速度慢(大型資料庫很正常)

👉 重點不是「跑多久」,而是「有沒有在跑」


八、給完全沒 DBA 背景的人一句話總結

SQL Server 備份不是「看畫面」,而是「看內部狀態」

看不到進度不代表失敗,
但查不到內部工作,幾乎一定有問題。


九、這篇文章適合誰?

  • 軟體工程師(非 DBA)

  • 剛接觸資料庫維運的人

  • 被交辦「幫忙備份 DB」的新手

  • 不想亂停服務、又怕備份失敗的人

留言

這個網誌中的熱門文章

🔍Vue.js 專案錯誤排查:解決 numericFields is not defined 與合併儲存格邏輯最佳化

🖥️遠端桌面連線完整新手指南:Windows RDP、Chrome Remote Desktop、AnyDesk、TeamViewer 一次搞懂

🔎EF Core 連 Oracle 出現 ORA-00600 [kpp_concatq:2] 的完整排錯指南(含 EF Core ToString/CultureInfo 錯誤)