數據庫的備份
數據庫備份分為完整備份和差異備份,首先理解下什么是完整備份和差異備份:
完整備份是指對數據庫的全部數據進行備份。
差異備份是指將數據庫上一次完整備份以后到現在為止的修改的數據進行備份,因此差異備份不能單獨使用,只能先還原上一次的完整備份,然后再還原差異備份。當我們有多個差異備份的時候,只要使用最新的差異備份文件就可以了,最新的差異備份文件會包含之前的差異備份。
sqlserver的備份可以通過腳本來執行,也可以通過圖形化界面執行。
1.腳本執行的sql語句如下:
--完整備份數據庫 BACKUP DATABASE Test_Bak TO DISK = 'E:\20181029\bak\Test_bak_full.bak' WITH INIT
--差異備份數據庫 BACKUP DATABASE Test_Bak TO DISK = 'E:\20181029\bak\Test_bak_diff.bak' WITH INIT, DIFFERENTIAL --加上DIFFERENTIAL代表差異備份
--事務日志備份 BACKUP LOG Test_Bak TO DISK = 'E:\20181029\bak\Test_bak_log.bak' WITH INIT --BACKUP LOG表示備份事務日志,BACKUP DATABASE表示完整或差異備份
--備份事務日志,文件名中包含當前時間,適合定時備份 DECLARE @strbackup NVARCHAR(100) --改為日期加時間的 SET @strbackup = 'E:\20181029\bak\Test_bak_log_' + REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR, GETDATE(), 120), '-', ''), ' ', ''), ':', '') + '.bak' BACKUP LOG Test_Bak TO DISK = @strbackup WITH INIT; GO
2.圖形化界面操作如下:
在數據庫中,選擇要備份的數據庫,右鍵》》任務》》備份
在彈出的窗口中,根據備份類型,選擇完整備份,差異備份還是事務日志備份
點擊確定,即可完成備份文件的生成。
正常我們做備份,是先做一個完整備份,然后再定時做一個差異備份,還原的時候,只要先還原完整備份,然后再還原最新的差異備份即可。
因為備份是經常性的操作,隨着數據庫越來越大,備份時間要越來越久,每次都做完整備份不切實際,所以差異備份才是我們的選擇。
這里推薦兩種自動生成差異備份文件的方法:
1.通過sqlserver的維護計划來自動備份
在數據庫管理-》維護計划,右鍵,維護計划向導
在彈出的維護計划向導中,按提示一步步操作,生成一個自動備份的維護計划,根據設定的時間,sqlserver數據庫會自動執行這個維護計划。
2.通過sql語句+作業的方式自動備份
在數據庫SQL Server代理 -》作業,右鍵新建作業
根據提示新建作業,然后將sql語句添加到作業里面,設定每天作業執行時間,數據庫就會定時執行這個作業,即可進行自動差異備份。
數據庫的還原
1.首先還原完整備份,在需要還原的數據庫上右鍵,任務》》還原》》數據庫,如圖所示。
2.在“常規”選項中點擊“源設備”選取磁盤上備份好的.bak文件后,勾上“還原”選項的勾。
3.在“選項”頁面中,勾選上“覆蓋現有數據庫”,恢復狀態,選擇第一個“回滾未提交的事務。。。。”,其中在“行數據”和“日志”兩個數據行中,務必查看“還原為”的路徑是否指向了你需要還原的數據庫名字 dbname.mdf和dbname_log.ldf,因為有些被還原的數據庫名字和.bak備份文件中的名字不一樣,導致還原失敗。
4.點擊確定后還原完整備份成功。
5.還原差異備份,選擇所要還原的數據庫,右鍵,任務》》還原》》文件和文件組,如圖所示。
6.其他操作跟還原完整備份一樣,在常規和選項選擇對應的選項,最后點擊確定,還原成功。