數據庫回滾到時間的的前提: 事務日志完整,數據庫在完整恢復模式下進行過一次完整備份,數據庫沒有進行過還原操作(慘痛教訓)。
當數據庫誤操作時,切記冷靜,不然問題就是滾雪球, 在不做下一步錯誤前 可觀看該大神的方法:
http://blog.csdn.net/dba_huangzj/article/details/8491327
不成功的原因 :1.數據庫一直處於簡單恢復模式 ,進行完整備份和差異備份(這種狀態可以還原數據庫,日志會被截斷,且所占內存相對小些,日志鏈不完整)
2.二次錯誤的發生,
回首第一步,不碰原表,還原以前的備份數據庫,再單獨修改誤操作的表。
http://www.lwfree.cn/daima/16562.html
一、完全恢復模式下,在不同備份情況時,是否截斷了日志?
1、完全備份時
2、差異備份時
3、事務日志備份時
二、截斷日志后,
1、在不改變完全恢復模式情況下,進行收縮,日志文件大小是不發生改變的,此時,日志文件內的日志是否刪除了?
2、改變完全恢復模式為簡單模式,然后再從簡單模式改為完全模式,沒有進行收縮操作,此時,日志文件內的日志發生了變化沒?
3、改變完全恢復模式為簡單模式,進行收縮,然后再改為完全模式,此是比較明確的,日志沒有了,被刪除了。
三、截斷日志的理解。
如果日志a1部分被截斷了,然后又產生了a2部分日志,那a1和a2部分的日志是連續的嗎?在備份事務日志的時候,是兩部分日志都備份嗎?如果都備份,那在做時點還原時,可以還原到該兩部分日志的任何時刻嗎?
一、完全恢復模式下,在不同備份情況時,是否截斷了日志?
1、完全備份時
2、差異備份時
3、事務日志備份時
只有日志備份才截斷日志
二、截斷日志后,
1、在不改變完全恢復模式情況下,進行收縮,日志文件大小是不發生改變的,此時,日志文件內的日志是否刪除了?
會改變,但是所謂的截斷只是把日志中已提交的數據寫入mdf/ndf,然后刪除這部分的數據,以便重用,如果不收縮,大小不變,收縮了大小就小了。
2、改變完全恢復模式為簡單模式,然后再從簡單模式改為完全模式,沒有進行收縮操作,此時,日志文件內的日志發生了變化沒?
馬上切換的話應該是沒有改變的。但是用了一段時間就不同了
3、改變完全恢復模式為簡單模式,進行收縮,然后再改為完全模式,此是比較明確的,日志沒有了,被刪除了。
日志不可能沒有了,只是簡單模式下是自動截斷,所以一般簡單模式的ldf文件比較小而已,你換回完整恢復模式,用了一段時間還是會增大的。
三、截斷日志的理解。
如果日志a1部分被截斷了,然后又產生了a2部分日志,那a1和a2部分的日志是連續的嗎?在備份事務日志的時候,是兩部分日志都備份嗎?如果都備份,那在做時點還原時,可以還原到該兩部分日志的任何時刻嗎?
截斷的日志已經存進了mdf/ndf中,在ldf已經不存在了,a2會重用這部分(前提是連續的操作,不然會被其他部分重用a1的日志空間),已經截斷了的部分已經不存在與ldf中,所以日志備份的文件中沒有這部分的內容。做時間點還原的時候首先要先還原完整備份,這是因為已截斷的部分在完整備份中,不再日志備份中。
在數據庫的使用中,有幾點要必備,1.有一次完整恢復模式下的完整備份;(重新開始日志鏈)
bak文件理解成一個壓縮包,完整備份和差異備份的時候會把數據和日志一起帶進壓縮包,
而日志備份的時候只會把日志帶進壓縮包(當時還原了數據庫,可能也對數據庫的日志文件有影響了 對於日志文件的理解可以觀看 http://blog.csdn.net/duanbeibei/article/details/50264117 (目前看不太懂))