SQL Server 備份和還原
SQL Server 備份
恢復(fù)模式
SQL Server 數(shù)據(jù)恢復(fù)模式分為三種:完整恢復(fù)模式、大容量日志恢復(fù)模式、簡(jiǎn)單恢復(fù)模式。

完整恢復(fù)模式
默認(rèn)的恢復(fù)模式,它會(huì)完整記錄下操作數(shù)據(jù)庫的每一個(gè)步驟,使用完整恢復(fù)模式可以將一個(gè)數(shù)據(jù)庫恢復(fù)到一個(gè)特定的時(shí)間點(diǎn),這個(gè)時(shí)間點(diǎn)可以是最近一次可用的備份、一個(gè)特定的日期和時(shí)間的事務(wù)。
大容量日志恢復(fù)模式
它是對(duì)完整恢復(fù)模式的補(bǔ)充,就是要對(duì)大容量操作進(jìn)行最小日志記錄,節(jié)省日志文件的空間。
比如說一次在數(shù)據(jù)庫中插入幾十萬條記錄時(shí),如果是完整恢復(fù)模式會(huì)記錄每一個(gè)插入動(dòng)作,使日志文件變的非常大。在大容量日志恢復(fù)模式下,只記錄必要操作,不記錄所有日志,這樣可以提高數(shù)據(jù)庫性能。但是由于日志記錄不完整,一旦出現(xiàn)問題,數(shù)據(jù)將可能無法恢復(fù)。
因此,一般只有在操作大量數(shù)據(jù)的時(shí)候才將恢復(fù)模式改為大容量日志恢復(fù)模式,在數(shù)據(jù)處理完畢后,馬上將恢復(fù)模式改回完整數(shù)據(jù)庫模式。
簡(jiǎn)單恢復(fù)模式
簡(jiǎn)單恢復(fù)模式下,數(shù)據(jù)庫會(huì)自動(dòng)把不活動(dòng)的日志刪除,因此簡(jiǎn)化了備份的還原,但因?yàn)闆]有日志備份,所以不能恢復(fù)到失敗的時(shí)間點(diǎn)。通常,這個(gè)模式只用于對(duì)數(shù)據(jù)庫安全要求不太高的數(shù)據(jù)庫。并且數(shù)據(jù)庫只能做完整和差異備份,無法使用事務(wù)日志備份。
數(shù)據(jù)庫備份
SQL Server 提供了四種備份模式:完整備份,差異備份,事務(wù)日志備份,文件和文件組備份。

完整備份
備份整個(gè)數(shù)據(jù)庫的所有內(nèi)容,包括事務(wù)日志。該備份類型需要比較大的存儲(chǔ)空間來存儲(chǔ)備份文件,備份時(shí)間也比較長,在還原數(shù)據(jù)庫時(shí),也只要還原一個(gè)備份文件即可。
如:2015年1月1日 8點(diǎn)進(jìn)行了完整備份,那么恢復(fù)數(shù)據(jù)的時(shí)候就是恢復(fù)到2015年1月1日 8點(diǎn)的數(shù)據(jù)。
差異備份
差異備份是完整備份的補(bǔ)充,只備份上次完整備份后更改的數(shù)據(jù)。相對(duì)于完整備份來說,差異備份的數(shù)據(jù)量比完整數(shù)據(jù)備份小,備份的速度也比完整備份要快。因此,差異備份通常座位常用的備份方式。在還原數(shù)據(jù)時(shí),要先還原前一次的完整備份,然后還原***一次所做的差異備份。
如:2015年1月1日 8點(diǎn)進(jìn)行了完整備份,在1月2日 和1月3日又分別進(jìn)行了差異備份,那么1月2日記錄的是1-2的數(shù)據(jù),1月3日則是1-3的數(shù)據(jù)。因此在還原時(shí),如果想回到3日的狀態(tài),需要先恢復(fù)完整備份,然后還原1月3日的差異備份即可。
事務(wù)日志備份
事務(wù)日志備份只備份事務(wù)日志里的內(nèi)容,事務(wù)日志記錄了上一次完整備份或事務(wù)日志備份后數(shù)據(jù)庫的所有變動(dòng)過程。事務(wù)日志記錄的是某一段時(shí)間內(nèi)的數(shù)據(jù)庫變動(dòng)情況,因此在進(jìn)行事務(wù)日志備份之前,必須要進(jìn)行完整備份。與差異備份類似,事務(wù)日志備份生成的文件嬌小、占用時(shí)間較短,但是在還原數(shù)據(jù)庫時(shí),除了要線還原完整備份外,還要依次還原每個(gè)事務(wù)日志備份,而不是還原***一個(gè)。
如:2015年1月1日 8點(diǎn)進(jìn)行了完整備份,此時(shí)對(duì)數(shù)據(jù)庫做的所有改動(dòng)都會(huì)按照時(shí)間分批存儲(chǔ)在事務(wù)日志備份中,這樣可以還原到某個(gè)時(shí)間點(diǎn),使用SSMS可以自動(dòng)完整相關(guān)時(shí)間鏈。
文件和文件組備份
如果在創(chuàng)建數(shù)據(jù)庫時(shí),為數(shù)據(jù)庫創(chuàng)建了多個(gè)數(shù)據(jù)庫文件或文件組,可以使用該方式。使用文件和文件組備份方式可以只備份數(shù)據(jù)庫中的某些文件,該備份方式在數(shù)據(jù)庫文件非常龐大時(shí)非常有效,由于每次備份一個(gè)或幾個(gè)文件,可以分多次來備份數(shù)據(jù)庫,避免大型數(shù)據(jù)庫備份的時(shí)間過長。另外,當(dāng)某個(gè)文件損壞時(shí),可以只還原損壞的文件或文件組部分。
進(jìn)行完整備份





備份完成后,去選擇的目錄中查看文件。

- --完整備份
- select count(*) from news
- --79647
此時(shí)插入測(cè)試數(shù)據(jù),并執(zhí)行差異備份
- --插入測(cè)試數(shù)據(jù)
- declare @index int = 1
- while (@index <100)
- begin
- insert into news (title,content,datetime) values ('title' + cast(@index as varchar),'content',getdate())
- set @index = @index +1
- end
- select count(*) from news
- --79746

查看目錄,文件已經(jīng)變大了。

繼續(xù)插入測(cè)試數(shù)據(jù),并執(zhí)行事務(wù)日志備份
- --插入測(cè)試數(shù)據(jù)
- declare @index int = 1
- while (@index <100)
- begin
- insert into news (title,content,datetime) values ('title' + cast(@index as varchar),'content',getdate())
- set @index = @index +1
- end
- select count(*) from news
- --79845

目錄下的文件又變大了,我就不截圖了。
此時(shí)刪除所有數(shù)據(jù)
- --刪除數(shù)據(jù)
- delete news
- --0
SQL Server 還原
還原數(shù)據(jù)庫時(shí),如果必須還原一個(gè)完整備份、一個(gè)差異備份以及一個(gè)事務(wù)日志備份,則必須按照這個(gè)順序來還原。
在還原數(shù)據(jù)庫時(shí),數(shù)據(jù)庫處于一個(gè)不可用的狀態(tài),如此就可以添加后續(xù)的差異和事務(wù)日志備份了。
使用SSMS工具恢復(fù),可以自動(dòng)識(shí)別一個(gè)完整的備份鏈,從而根據(jù)指定的內(nèi)容還原全部備份,還原后數(shù)據(jù)庫就可用了。








select count(*) from news
--79845
執(zhí)行sql語句,數(shù)據(jù)還原到***一次有效的事務(wù)日志備份了。
關(guān)于備份還有一個(gè)小東西,備份設(shè)置,可以設(shè)置好物理路徑,存?zhèn)€邏輯名,備份的時(shí)候選擇這個(gè)名字,不用去找路徑。




唯一一點(diǎn)作用就是可以看里面詳細(xì)的備份信息