---恢復內容開始--- 數據庫的恢復模式是數據庫遭到破壞時還原數據庫中數據的數據存儲方式,它與可用性、性能、磁盤空間等因素相關。每一種恢復模式都按照不同的方式維護數據庫的數據和日志。系統提供了3種數據庫的恢復模式: 1、完整恢復模式 2、大容量日志
---恢復內容開始---
數據庫的恢復模式是數據庫遭到破壞時還原數據庫中數據的數據存儲方式,它與可用性、性能、磁盤空間等因素相關。每一種恢復模式都按照不同的方式維護數據庫的數據和日志。系統提供了3種數據庫的恢復模式:
1、完整恢復模式
2、大容量日志記錄的恢復模式
3、簡單恢復模式
完整恢復模式是最高等級的數據庫恢復模式。在完整恢復模式中,對數據庫的所有操作都記錄在數據庫的事務日志中。即使那些大容量數據庫操作和創建索引的操作,也就記錄在數據庫的事務日志中。當數據庫遭到破壞之后,可以使用該數據庫的事務日志迅速還原數據庫。
在完整恢復模式中,由于事務日志記錄了數據庫的所有變化,所以可以使用事務日志將數據庫還原到任意的時刻點。但是,這種恢復模式耗費大量的磁盤空間。除非是那種事務日志非常重要的數據庫備份策略,否則一般不建議使用這種恢復模式。
就想完整恢復模式一樣,大容量日志記錄的恢復模式也使用數據庫備份和日志備份還原數據庫。但是,在使用了大容量日志記錄的恢復模式的數據庫中,其事務日志耗費了的磁盤空間遠遠小于使用完整恢復模式的數據庫的事務日志。在大容量日志記錄的恢復模式中,Check Index、bulk insert、BCP、Select Into等操作不記錄在事務日志中。
對于那些規模比較小的數據庫或數據不經常改變的數據庫來說,可以使用簡單恢復模式。當使用簡單恢復模式時,可以通過執行完全數據庫備份和增量數據庫備份來還原數據庫,數據庫只能還原到執行備份操作的時刻點。執行備份操作之后的所有的數據修改都丟失并且需要重建。這種模式的特點是數據庫沒有事務日志。這種模型的好處是耗費比較少的磁盤空間,恢復模式最簡單。
舉個例子:
假設出問題的數據庫為A, 新恢復后的數據庫為B
1.前提:A數據庫的恢復模式必須為:完整。
2.備份A數據庫的日志,假設文件名為log.bak
3.使用A數據庫的最近的完整備份,使用 WITH NORECOVERY 的方式,恢復為B數據庫
4.使用恢復日志的方式,指定還原的時間點(T),將Log.bak文件還原到B數據庫,完成后,B數據庫的內容即是T時間之前的完整數據。
以下為測試語句建A數據庫
--創建A數據庫 CREATE DATABASE A GO --對A數據庫進行備份 BACKUP DATABASE A TO DISK= 'c:\A.bak ' WITH FORMAT GO --創建測試表 CREATE TABLE A.dbo.TB_test(ID int) GO --插入數據 Insert Into A.dbo.TB_test(ID) select 1 GO --延時1秒鐘,再進行后面的操作 --(這是由于SQL Server的時間精度最大為百分之三秒,不延時的話,可能會導致還原到時間點的操作失敗) WAITFOR DELAY '00:00:01 ' GO --假設我們現在誤操作刪除了 A.dbo.TB_test 這個表 DROP TABLE A.dbo.TB_test --為了測試還原時間點,先記錄操作的時間點 SELECT dt=GETDATE() INTO #T GO --在刪除操作后,發現不應該刪除表 TB_test --下面演示了如何恢復這個誤刪除的表 TB_test,以及數據行 --為了避免覆蓋A數據庫,恢復時,生成到B數據庫 GO --首先,備份A數據庫的事務日志(使用事務日志才能還原到指定的時間點) BACKUP LOG A TO DISK= 'c:\A_log.bak ' WITH FORMAT GO --接下來,我們要先還原完全備份(還原日志必須在還原完全備份的基礎上進行),生成數據庫B RESTORE DATABASE B FROM DISK= 'c:\A.bak ' WITH FILE = 1, MOVE N'A' TO N'C:\B.mdf', MOVE N'A_log' TO N'C:\B.ldf', NORECOVERY, REPLACE GO --將事務日志還原到刪除操作前(這里的時間對應上面的刪除時間,并比刪除時間略早 DECLARE @dt datetime SELECT @dt=DATEADD(ms,-20,dt) FROM #T --獲取比表被刪除的時間略早的時間 RESTORE LOG B FROM DISK= 'c:\A_log.bak ' WITH RECOVERY,STOPAT=@dt GO --查詢一下,看表是否恢復 SELECT * FROM B.dbo.TB_test --最后刪除我們做的測試環境 DROP DATABASE A DROP DATABASE B DROP TABLE #T
---恢復內容結束---
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com