第九章 安全管理篇 還原資料庫 黃佑軒 N1036715 黃怡強 N1036716
還原資料庫的方法 還原資料庫 使用T-SQL語法 還原Master資料庫 使用快照集(Snapshot)回復資料庫內容
還原資料庫的方法 各種備份還原的方法 1.資料庫完整備份之還原 由於資料庫的備份有多種不同的方法,還原資料庫時也須依照當初備份資料庫的方式,及還原作業的時間點以對應的步驟將備份下來的資料還原到伺服器中,使資料庫的內容能回復到您所希望的時間點。 各種備份還原的方法 1.資料庫完整備份之還原 2.差異是備份的還原 3.交易紀錄備份的還原
還原資料庫的方法 資料庫完整備份之還原 不管您之前進行的是資料庫完整備份、差異式、和交易紀錄備份交錯使用遇到需還原料 庫時,都須先還原資料庫完整備份。 若是只做資料庫完整備份,只需還原最新的備份資料,就算是完成還原的工作了。但是 搭配差異式或交易紀錄備份的話,還原資料庫完整備份就只是整個還原作業中的第一動 作而已,還得繼續還原後續的差異式或交易紀錄備份資料。
還原資料庫的方法 差異式備份的還原 還原差異式備份,只需先還原最近一次的完整資料庫備份,然後再還原最近一次差異備 份即可。 例如:採取每週日做一次機料庫完整備份,每天清晨做一次差異式備份者,在星期三到 需要做還原的情況時,需先還原上周六的資料庫備份,然後再還原當天清晨所做的差異 備份,即可完成整個還原工作。
還原資料庫的方法 交易紀錄備份的還原 還原交易式備份通常都會以較頻繁的頻率進行交易紀錄備份,所以已用交易紀錄備份進 行還原時,意味著能將資料庫回復到較接近目前的狀態。 以結合三種備份方式搭配使用的方案為例: 每周日做一次完整的資料庫備份、每天清晨做一次差異是備份、而白天每6小時做一次交 易紀錄備份。若在周二中午發生了需還原的事故,此時須先還原周日的完整備份,然用 周二當天凌晨所做的差異是備份還於資料,讓資料庫回復到今天凌晨的狀態,接著再出 從周二早上到中午為止的每一分交易紀錄備份,依輩分的先後順序還原,使得交易紀備 份回到最近一次的狀態。
還原資料庫的方法 交易紀錄備份的還原 雖然大部分情況我們都是採用這種方法,使得還原後的資料庫能盡量接近發生問題時狀 態,不過有時候我們反而會想讓資料庫只回復到更早之前的狀態。 例如:發現在某段時間對資料庫做了不當的大量修改動作,此時有兩種做法 將還原執行到自己想要的那一次交易紀錄備份就可以了而不需還原所有的交易紀錄備份 指定您希望資料庫還原到哪一個時間點
還原資料庫 還原資料庫前的處理 使用Management Studio 管理工具進行還原 我們可以使用 Management Studio 管理工具或 T-SQL 語法執行還原作業,在還原資料資料庫前,先說明需檢查或注意的事項。 還原資料庫前的處理 檢查備份裝置 資料庫的使用狀態 使用Management Studio 管理工具進行還原 還原資料庫 檔案和檔案群的還原 還原裝置上特定的備份集
還原資料庫前的處理 檢查備份裝置 在資料庫還原前,先找出要用來還原的備份資料(裝置) 如果您是用磁帶或抽換式的硬碟備份,應在裝置上標明備份的日期、備份的資料庫名稱、和備份的方式等重要資訊。 如果是無法辨識,則可用 RESTORE HEADERONLY 來查看裝置的內容,是否含有要用來還原的備份集(backup set) 除了 RESTORE HEADERONLY 外,還有 RESTORE FILELISTONLY 和 RESTORE LABEL ONLY 也可以用來查看備份裝置的內容。
還原資料庫前的處理 檢查備份裝置 RESTORE FILELISTONLY FROM 備份裝置名稱 [WITH [ [,] {NOUNLOAD | UNLOAD }] ] RESTORE LABLONLY [WITH {NOUNLOAD | UNLOAD }] 使用這兩個敘述時都能加上 WITH NOUNLOAD 或 WITH UNLOAD 參數來指定是否要在執完 畢後讓磁帶機退出磁帶,預設值為 UNLOAD 或沿用此次工作階段內,前一次參數的設定。
還原資料庫前的處理 檢查備份裝置 而RESTORE FILELISTONLY可以加上'FILE = 備份集編號'的參數來指定要列出該裝置上的第幾個備份集的資訊,如下圖: 備份資料中的檔案設定若是和SQL Server中所記錄的資料庫檔案設定不同,例如主資料檔檔名不一樣,則還原將無法進行。
還原資料庫前的處理 檢查備份裝置 在msdb資料庫中,存放備份相關資訊的資料表有以下幾個: BackupFile:內含備份檔案的資訊,包括備份集ID、備份的頁數、檔案大小、檔案的邏輯名稱和實體路徑等。 BackupFileGroup:包含以備份資料庫的檔案群組資訊,如備份集ID、群組類型、是否為預設群組等。 BackupMediaset:使用磁帶機(或其他可抽換裝置)做備份時,若用了多卷磁帶才備份下來,則這些磁帶統稱媒體集。此資料表就是記錄各媒體集的資訊 BackupMediaFamily:如果不只是用了多卷磁帶來做備份,還同時動用了多台磁帶機來做備份,則由同一台磁帶機所產生的磁帶屬於一個media family,但這次備份所用到的全部磁帶則為同一個媒體集。資料表會記錄各media family 所用到的媒體數量,以及此family 屬於哪一個媒體集等資訊。 Backupset:您所做的每一次備份動作都會記錄於此,包括所設的備份名稱和說明、備份的起迄時間、備份的資料庫與大小、和伺服器名稱等等。
還原資料庫前的處理 資料庫的使用狀態 如果還原的原因是資料檔案壞掉等,那麼可能SQL Server仍在運作中,或者也許有人開啟 了正要還原的資料庫,這將會使還原作業無法正常執行。
使用Management Studio 管理工具進行還原 還原資料庫 以 Management Studio 管理工具, 只需在物件總管窗格的任何一個資 料庫圖是上按滑鼠右鍵開啟快顯功 能表,然後選『工作/還原/資料庫』 命令,操作如下:
使用Management Studio 管理工具進行還原 還原資料庫 若選取的備份組件中包含差異備份、交易備份等不同時間點的備份資料,且想自行選要 還原到某個時間點,則可在按下確定鈕前,先按交談窗中間右側的時間表鈕,如下設定:
使用Management Studio 管理工具進行還原 還原資料庫 若想對還原的方式做額外的設定, 則可在按下確定鈕前, 切換到選項頁面進行設定:
使用Management Studio 管理工具進行還原 還原資料庫 在一般情況下,並不需特別去做上述的設定,只需在一般頁面中設定好,在按確定鈕可 以開始還原了。不過在某些特殊情況下就須根據不同的狀況在選項頁面做相關的設定才 行。 例如:資料庫的檔案已完全損毀而不存在,雖然SQL Server在啟動時會自動對資料庫做修 復,但在找不到資料庫時,他會建立代替性的檔案,而在還原時資料庫時就會發生無蓋 掉這些代替檔案的錯誤訊息,再次情況下就要設定" 複寫現有的資料庫 "這個選項,才能 將原資料蓋過現有資料檔。
使用Management Studio 管理工具進行還原 還原資料庫 交談視窗中上方的三個" 復原狀態 "選項設定,分別說明如下: RESTORE WITH RECOVERY: (回覆未認可的交易,讓資料庫保持備妥可用。無法還原其他交易紀錄) RESTORE WITH NORECOVERY: (讓資料庫保持不運作,且不回復未認可的交易。可以還原其他交易紀錄) RESTORE WITH STANDBY: (讓資料庫保持唯獨模式。恢復未認可的交易,但是將恢復動作儲存在待命的資料庫檔案,以便在能夠反轉復原結果)
使用Management Studio 管理工具進行還原 還原資料庫 RESTORE WITH NORECOVERY 在我們要連續還原數個交易紀錄備份時,前幾次都須用到這項,因為可能有『跨備份』的交易。 例如:這項交易只做到一半,所以交易紀錄備份也只備份了交易前半段的內容,剩下另 一半則是在下次交易紀錄的備份時才會備份下來。 此時若選第一個RESTORE WITH RECOVERY,在還原最後一份交易紀錄備份之後, SQL Server 就會rollback 執行到一半的交易,使得後半部的交易派不上用場。
使用Management Studio 管理工具進行還原 還原資料庫 RESTORE WITH STANDBY 使用的時機適用在備用伺服器,因為建立備用伺服器的方式是將 使用中 SQL Server 上的資料庫做備份,在拿到備用伺服器上還原,日後則是定時做交紀 錄備份,在於備用伺服器上還原。 “ RESTORE WITH NORECOVERY ”的還原方式,雖可以繼續做下一次的交易紀錄還原,但資料庫仍是未準備好的狀態,而“ RESTORE WITH RECOVERY ”又不能繼續做後續的還原,所以在維護備用資料庫時一定要用“ RESTORE WITH STANDBY ”使資料庫能夠使用又能做後續的交易紀錄還原。
使用Management Studio 管理工具進行還原 檔案和檔案群的還原 若要還原的是資料庫中的部分檔案 和檔案群,請在Management Studio 任一資料庫圖示上方按滑鼠右鈕, 執行『工作/還原/檔案和檔案群組』 命令,此時交談視窗的內容會變成 如下圖:
使用Management Studio 管理工具進行還原 還原裝置上特定的備份集 指定要還原備份裝置上的某一備份集, 此法也可用在雖有備份裝置的原始資料 但SQL Sever 中並無裝置指向此檔案的情 況。要使用此種方式需開啟" 還原資料庫 "交談視窗後,選取"來源/裝置",如下:
使用T-SQL語法 若要使用T-SQL來做資料庫的還原可使用RESTORE DATABASE 敘述,以下我們也分成還原資料庫完整 / 差異式備份、交易紀錄備份,和檔案或檔案群組等不同的做法來介紹。 使用Management Studio時的選項頁面一樣,在RESTORE DATABASE敘述中也都會有對應的參數可做相同的還原設定,以下我們就來看這些參數的用法(記得在第一個參數前加上WITH關鍵字): RESTRICTED_USER : 此參數在舊版SQL Server的名稱為DBO_ONLY,加上此參數的話,則還原完畢的資料庫會被設成只有db_owner、dbcreator與sysadmin可使用的狀態。若要讓資料庫能供其他使用者存取,可在資料庫的屬性交談窗中切換到選項頁面,將限制存取這個選項設定為MULTI_USER即可。 FILE = 備份集編號 : 指定要還原備份裝置中第幾個備份資料組。
使用T-SQL語法 MOVE '邏輯檔案名稱' TO '實體檔案名稱' : 將備份資料中的' 邏輯檔案名稱 ' 還原成 ‘ 實體檔案名稱 ' ,就和在還原交談窗之選項頁面中更改'還原成'欄位的檔案名稱具有相同效果。 NOUNLOAD | UNLOAD : 在使用磁帶機裝置時,可用這兩個參數指定還原完畢時是否自動退出磁帶,預設值為UNLOAD。 RECOVERY | NORECOVERY | STANDBY = 復原檔檔名 : 這三個參數的設定效果就和在還原交談窗之選項頁面中的復原狀態選項是一樣的,也就是設定還原後資料庫的狀態。這三個參數的作用依序是使資料庫進入可正常使用的狀態(此為預設值)、資料庫仍無法正常使用,以及使資料庫成為唯獨。使用最後一項STANDBY時,需在指定一個檔案做為儲存復原資訊的資料檔。 REPLACE : 指定還原時強制蓋過現有的資料庫檔。
使用T-SQL語法 還原資料庫完整備份或差異備份 RESTORE DATEBASE { 資料庫名稱 | @資料庫名稱變數} [ FROM <裝置名稱> [ , . . . n ] ] [ WITH [RESTRICTED_USER ] [ [ , ] FILE = 備份集編號 ] [ [ , ] MOVE ‘ 邏輯檔案名稱 ' TO ' 實體檔案名稱 ' ] [ , . . . n ] [ [ , ] { NOUNLOAD | UNLOAD } ] [ [ , ] { RECOVERY | NORECOVERY | STANDBY = 復原檔檔名 } ] [ [ , ] REPLACE ] ]
使用T-SQL語法 依需要在RESTORE DATABASE後面加這些參數,例如下列的敘述,就是從名為MyBackup的備份裝置還原資料庫,強制複寫目前的資料庫:
使用T-SQL語法 還原交易紀錄備份 若要還原的是交易紀錄備份,則需使用RESTORE LOG 敘述,其語法和RESTORE DATABASE 大同小異,可用的參數也大致相同: RESTORE LOG { 資料庫名稱 | @資料庫名稱變數} [ FROM <裝置名稱> [ , . . . n ] ] [ WITH [RESTRICTED_USER ] [ [ , ] FILE = 備份集編號 ] [ [ , ] { RECOVERY | NORECOVERY | STANDBY = 復原檔檔名 } ] [ [ , ] { NOUNLOAD | UNLOAD } ] [ [ , ] RESTART ] [ [ , ] ] STOPAT = { 日期時間 | 日期時間變數 } ] ]
使用T-SQL語法 還原交易紀錄備份
使用T-SQL語法 還原檔案和檔案群組
使用T-SQL語法 附加資料庫 除了用還原的方式就回資料外,如果您有一份原資料庫的資料檔複本的話,也可以用附加(Attach)資料庫的方式就回資料庫。這個方法需使用CREATE DATABASE 敘述,其語法如下: CREATE DATABASE 資料庫名稱 ON ( FILENAME = '檔案名稱' ) [ , . . . n] FOR ATTACH
使用T-SQL語法 附加資料庫 以下就是將主資料檔和交易紀錄檔附加至SQL Server ,而重建資料庫的例子:
還原Master資料庫 由備份資料中救回master資料庫 SQL Server 在啟動時需從 master 中取得各項系統資訊,如果損毀的是master系統資料庫,我們得採取較特別的方式來救回伺服器。 由備份資料中救回master資料庫 若 master 資料庫已損毀,但之前有備份,而想救回 master 資料庫,可採取以下步驟: 如果SQL還在運作,可以先將 msdb 和 model 等重要的系統資料先做備份,因為在重建 master 資料庫時也會重建這些資料庫。 執行『開始/所有程式/附屬應用程式/命令提示字元』開啟命令提示視窗,執行下面指 令: C:\Users\Administrator>cd”C:\Program Files\Microsoft SQL Server\110\Setup Bootstrap\SQL Server 2012” C:\Program Files\Microsoft SQL Server\110\Steup Bootstrap\SQL Server 2012>setup.exe /QUIET/ACTION=REBUILDDATABASE/INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=Administrator/[SAPWD=secret]
還原Master資料庫 由備份資料中救回master資料庫 3.重建好之後,請以單使用者模式來啟動 SQL Server ,只有在單使用者模式下才能進行 master 資 料庫的還原。只要加上-m參數就能以單使用者模式啟動 SQL Server 。 4.在單一使用者模式,不建議使用SSMS,可改用SQL Server 中的命令列工具 sqlcmd.exe 來 執行還原的T-SQL。開啟命令提示字元,進入SQL Server 安裝資料夾。例如 C:\Program File\Microsoft SQL Server\110\Tools\Bins(或Binns)。 5.重啟SQL Server ,建立新的備份裝置,將其路徑指向這些現存的裝置(檔案),還原msdb、model 和散發等系統資料庫
還原Master資料庫 無備份時修復master資料庫的方法 如果之前沒有做 master 資料庫的備份,要救回 master 資料庫、SQL Server 非常困難,只能 盡量讓master 資料庫的內容裝有較接近目前整個系統資料庫的狀態的資訊而已。這種情況 下最好先有msdb 和 model 和散發等系統資料庫的備份,若是沒有這些備份許多資訊就得自 己重頭設定。 這種情況下要先重建 master 資料庫,先執行前頁的步驟1、2,再進行如下: 啟動SQL Server ,並以具有管理員權限的登入或 sa 帳號登入,因為是新建立的 master 資料庫, 所以 sa 的密碼會變更為前頁步驟2指令中SAPWD參數所指定的字串。 找出存有msdb 和 model 和散發等系統資料庫的備份的備份裝置(檔案),在SQL Server 中建立新的備份裝置,將路徑指向這些現存裝置(檔案),來還原系統資料庫。 以CREATE DATABASE...FOR ATTACH敘述將我們自建的其他資料庫檔案附加至伺服器上。 重建登入帳戶,至於資料庫使用者因為都還存於各資料庫中,所以只須讓新的登入帳 戶和資料庫使用者相對應就可以了。 如果您先前還曾對SQL Server 做過其他的設定,就在將之設定成您要的狀態。
使用快照集(Snapshot)回復資料庫內容 若已為資料庫建立快照集,有必要時亦可利用快照集將資料庫內容回復到建立快照集 的時間點。 不過由於快照集並不是資料庫的完整復本,快照集內只儲存了有差異的資料,所以若 資料檔案已經完全損毀,便無法使用快照集進行還原。 使用快照即進行還原時,該資料庫中必須置有一個快照集存在。