[SQL]搶救 master 資料庫為什麼不直接使用安裝程式來處理呢 ?

使用 setup 搭配 REBUILDDATABASE , 這樣處理不是快很多嗎 ? 幹嘛去花時間修復損毀的 master 或者是從備份檔案還原呢 ?

繼前一篇「搶救因為 master 資料庫損毀而不能啟動的 SQL Server」寫完之後,收到一些朋友的回應,有些人表示直接拿同一個版本另外的資料庫的  master 檔案來覆蓋,不就可以正常使用了嗎 ? 也有朋友提到說在網路上可以找到說使用 SETUP ,就可以修復 master 資料庫的損毀了,前面那樣的文章不是有點多此一舉嗎 ?

說實話我剛開始接觸資料庫的時候也有類似的想法,但是後來自己實做幾次之後,也才發現有些差異。基本上透過 SETUP 來進行 REBUILDDATABASE 這個是一個很終極的方式,當您這樣處理的時候,基本上 SQL Server 的安裝程式,會從您的安裝片中重新將系統資料庫複製到您所安裝的目錄下,因此可以算是一個回到初始化的狀態,這裡我做一個模擬,我先將一個 SQL Server 的 master 資料庫給弄壞

這個時候我透過 SETUP 來進行以下處理 ( 密碼的部分我就先遮罩一下 ),基本上這個速度是很快的

當我們完成相關處理之後,這個時候就可以重新啟動並且登入資料庫,這一切看起來是蠻好的,但是要是仔細的看一下,會發現原本已經建立的帳號、資料庫,或者是排程中的 Job 或者是 Alert 全部都沒有了。

而這一切可以從 SQL Server 的 Error Log 中稍微看到一些端倪,安裝程式會先幫我們將一些系統檔案複製到目錄下,然後透過指定一些特殊的啟動參數,將 SQL Server 給啟動起來,然後將那些系統資料庫升級到對應目前的版本

因此如果您真的遇到  master 資料庫損毀,又沒有 master 資料庫的備份的時候,再來使用這樣的方式。但要記得最好是在使用這個方式的時候,能夠先將系統資料庫的檔案給複製出來,這樣您可以當 SQL Server 可以恢復使用之後,嘗試看看是否可以掛載那些檔案起來修復看看,在以往的經驗中有些時候是可以順利修復,那麼就還有機會恢復到之前的狀況,但是要是沒有機會修復,那可能就自己要在手動將那些設定自己手動給建立上去了。