SqlServer2005備份模式與恢復模式

2021-09-06 07:04:16 字數 2231 閱讀 5885

sql server 2005及以上版本也可以使用下面這條語句來檢視:

select name, recovery_model_desc from master.sys.databases order by name

如果想改變資料庫的恢復模式,可以使用下面sql語句:

簡單恢復模式:alter database adventureworks set recovery ******

完整恢復模式:alter database adventureworks set recovery full

批量日誌恢復模式:alter database adventureworks set recovery bulk_logged

在實際情況中,你應該選擇使用哪種恢復模式呢?答案在於你能承受丟失多少資料。讓我們用下面這些圖表來說明這三種恢復模式之間的不同。下面這張圖是乙個資料庫分別在9點和11點進行了一次完整備份。

假設硬體在10:45分時壞了。 如果資料庫使用的是簡歷模型的話,那你將要丟失105分鐘的資料。因為你可以恢復的最近的時間點是9點,9點之後的資料將全部丟失。當然你可以使用差異備份來分段執行,如下圖:

像這樣使用差異性備份的話,你將丟失45分鐘的資料。現在,假設使用者在9:50刪除了一張很重要的表,你能恢復刪除點之前的資料嗎?答案當然是no。因為差異性備份僅僅包含資料頁的修改,它不能用於恢復乙個指定的時間點。你不得不把資料庫恢復到9點的狀態,然後重做後面49分鐘的事情。

假如在9點和11點之間沒有進行事務日誌的備份,那麼你將面臨和使用簡單恢復模式一樣的情況。另外,事務日誌檔案會很大,因為sql server不會刪除已經提交和已經checkpoint的事務,直到它們被備份。

假設每30分鐘備份一次事務日誌:

假如硬體在10:45分時壞了,那你只會丟失15分鐘的資料。你可以使用9點的完整備份及直到10:30的事務日誌來恢復。假如9:50分刪除了重要資料怎麼辦呢?沒關係,你可以使用在10點備份的事務日誌,把資料庫恢復到9:49分的狀態。 因為你恢復時無法直接跳過9:50那次誤刪除的操作日誌而恢復9:50之後的資料, 所以你還必須重做誤刪除之後的操作。不過,這已經是不錯的選擇了。

注意:市場上有一些工具,可以使用事務日誌來恢復使用者誤操作而丟失的資料,就是利用了上述原理

批量日誌恢復模式被定義成一種最小化事務日誌的完整恢復模式。例如select into就是一種最小化事務日誌,假設這種事務發生在9:40分

這個事務將被最小化的記錄下來,這就意味著sql server僅僅記錄由於這個事務而產生的資料頁的變化,它不記錄每一條插入到資料表中的資料。假如9:50時乙個重要的表資料被刪除了,那意味著什麼呢?意味著你不能把資料庫再恢復到9:49分的狀態了,因為事務日誌在10點時被備份並且不能恢復到乙個指定的時間點上。你只能把資料庫恢復到9:30分的狀態。你要記住,無論在什麼時候,只要事務日誌備份包含乙個或多個最小化日誌事務,那你就不能再把備份還原到乙個指定的時間點了。

既然如此,那人們為什麼還要使用批量日誌恢復模式呢?乙個最主要的原因就是效能。讓我們以select into以例,從乙個結果集來建立一張大表。假如你使用完整備份模型,那這張表中的每一條插入的資料都被記錄下來,事務日誌會消耗很多磁碟空間。假如你使用批量日誌恢復模式,那麼僅僅會記錄資料頁的修改細節以達到最好的效能。就像我們剛才描述的那樣,使用事務日誌的好處就是可以恢復到某乙個指定的恢復點,但是會大大影響效能。

然則,假如你的資料庫使用批量日誌恢復模式且事務日誌包括最小化日誌事務,那麼包括被修改過的頁的資料檔案一定要可用,假如資料檔案不可用了,也就意味著你將不能備份事務日誌結尾。這也是使用批量日誌恢復模式另乙個需要考慮的地方。

總之,簡單恢復模式提供了數量最少的恢復選項和最簡單的管理模型。完整恢復模式在恢復資料庫時允許更複雜的情況存在。批量恢復模式簡化了一些複雜性,從而得到了更好的效能。大家可以從books online中得到這三種恢復更細緻的對比。

SQL SERVER 2005自動備份

在 sql server 2005 資料庫中實現自動備份的具體步驟 1 開啟sql server management studio 2 啟動sql server 3 點選作業 新建作業 4 常規 中輸入作業的名稱 5 新建步驟,型別選t sql,在下面的命令中輸入下面語句 declare strp...

sqlserver 2005 備份還原失敗

1.直接右鍵還原資料庫可能會失敗。如果失敗 使用下面的sql語句還原 use master restore database bingo from disk f devproject bingo bingo.bak with move dvbbs sql data to f devproject b...

SQL Server2005異地自動備份

最近公司剛剛搭建了一台安防綜合平台,綜合平台伺服器上安裝了sql server 2005,由於沒有備份伺服器,所以只能異地備份資料庫了。在網上找了很多的資料,自己整合了一下 一 開啟 sql agent 服務,並設定為 自動 二 備份 1 sql 作業 新建作業,這是在sql2005下的操作,其實s...