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