學(xué)習(xí)啦>學(xué)習(xí)電腦>操作系統(tǒng)>windows教程>

sqlserver多數(shù)據(jù)庫自動備份系統(tǒng)

時(shí)間: 春健736 分享

  可自動備份除系統(tǒng)數(shù)據(jù)庫外的所有數(shù)據(jù)庫。備份文件的周期保存周期可以更改。學(xué)習(xí)啦小編為大家分享sqlserver多數(shù)據(jù)庫自動備份系統(tǒng)

  sqlserver多數(shù)據(jù)庫自動備份系統(tǒng)

  在SQL Server中出于數(shù)據(jù)安全的考慮,所以需要定期的備份數(shù)據(jù)庫。而備份數(shù)據(jù)庫一般又是在凌晨時(shí)間基本沒有數(shù)據(jù)庫操作的時(shí)候進(jìn)行,所以我們不可能要求管理員每天守到晚上1點(diǎn)去備份數(shù)據(jù)庫。要實(shí)現(xiàn)數(shù)據(jù)庫的定時(shí)自動備份,最常用的方式就是使用SQL Server代理中的作業(yè)。啟動SQL Server Agent服務(wù),然后在其中新建作業(yè),作業(yè)中添加1個(gè)備份步驟,類型是T-SQL腳本,然后在命令中輸入如下SQL語句,該語句實(shí)現(xiàn)了對數(shù)據(jù)庫TestDB1的完整備份,備份文件在C盤Backup文件夾中,文件名就是TestDB1+當(dāng)時(shí)備份的日期字符串.bak。

  declare@namevarchar(250)

  set@name='C:\Backup\TestDB1_'+

  convert(varchar(50),getdate(),112)+'.bak'

  BACKUPDATABASE[TestDB1]TO

  DISK=@name

  WITH NOFORMAT, NOINIT,

  NAME = N'TestDB1-完整 數(shù)據(jù)庫 備份',

  SKIP, NOREWIND, NOUNLOAD

  創(chuàng)建好步驟以后,接下來就是創(chuàng)建計(jì)劃,創(chuàng)建計(jì)劃的操作十分簡單,界面上說明的很詳細(xì)了,我就不多說了。另外還可以配置警報(bào)和通知,不過一般很少用這個(gè)。

  使用SQL作業(yè)中執(zhí)行SQL腳本進(jìn)行備份的方法雖然已經(jīng)很簡單了,但是至少還是要去寫B(tài)ACKUP腳本,這點(diǎn)有些人覺得不爽,那有沒有更簡單,更懶的方法來實(shí)現(xiàn)數(shù)據(jù)庫的自動定時(shí)備份呢?有,那就是“維護(hù)計(jì)劃”。

  “維護(hù)計(jì)劃”是在SSMS的對象資源管理中“管理”節(jié)點(diǎn)下面。使用維護(hù)計(jì)劃可以通過可視化的操作,只點(diǎn)點(diǎn)鼠標(biāo)就可以創(chuàng)建數(shù)據(jù)庫維護(hù)的SSIS包,然后仍然是通過SQL Server作業(yè)的方式來運(yùn)行。維護(hù)計(jì)劃與前面說到的備份方法本質(zhì)的不同就是:維護(hù)計(jì)劃是SSIS包,上面的是T-SQL腳本。

  假設(shè)我們現(xiàn)在有一個(gè)生產(chǎn)系統(tǒng)的數(shù)據(jù)庫需要進(jìn)行備份,由于數(shù)據(jù)庫中的數(shù)據(jù)很多,數(shù)據(jù)文件很大,如果每次都進(jìn)行完整備份那么硬盤占用了很大空間,而且備份時(shí)間很長,維護(hù)起來也很麻煩。對此我們可以采用完整備份+差異備份的方式,每周日進(jìn)行一次完整備份,每天晚上進(jìn)行一次差異備份。使用差異備份可以減小備份文件的大小,同時(shí)還可以提高備份的速度,不過缺點(diǎn)就是必須使用上一次完整備份的文件和差異備份的文件才能還原差異備份時(shí)刻的數(shù)據(jù)庫,單獨(dú)只有差異備份文件是沒有意義。

  下面我來講一下如何通過維護(hù)計(jì)劃來實(shí)現(xiàn)完整備份+差異備份:

  (1)在SSMS的對象資源管理器中右擊“維護(hù)計(jì)劃”,選擇“維護(hù)計(jì)劃向?qū)?rdquo;,系統(tǒng)將彈出向?qū)Т翱?,如圖:

  這里向?qū)б呀?jīng)告訴我們維護(hù)計(jì)劃到底能夠干什么了,其中最后一項(xiàng)“執(zhí)行數(shù)據(jù)庫備份”正是我們所需要的。

  (2)點(diǎn)擊“下一步”按鈕,進(jìn)入選擇計(jì)劃屬性窗口,輸入計(jì)劃的名稱,由于我們的計(jì)劃包括2部分:完整備份和差異備份,這2部分的執(zhí)行計(jì)劃是不一樣的,一個(gè)是一周執(zhí)行一次,另一個(gè)是一天執(zhí)行一次,所以要選擇“每項(xiàng)任務(wù)單獨(dú)計(jì)劃”,如圖:

  (3)單擊“下一步”按鈕,選擇維護(hù)任務(wù),這里就是可以在維護(hù)計(jì)劃中執(zhí)行的任務(wù),如果你想執(zhí)行的任務(wù)在這里沒有,那就還是不用維護(hù)計(jì)劃來做,自己寫SSIS包或者SQL語句吧。我們要執(zhí)行的任務(wù)都在這里,選中這2個(gè)任務(wù),如圖:

  (4)單擊“下一步”進(jìn)入選擇維護(hù)任務(wù)順序的界面,這里我們可以看到選中的任務(wù)出現(xiàn)在列表中,但是我們并不能調(diào)整其順序,那是因?yàn)樵诓襟E2中我們選擇的是每項(xiàng)任務(wù)單獨(dú)計(jì)劃,所以這2個(gè)任務(wù)是獨(dú)立的,沒有先后順序可言。如果當(dāng)時(shí)選擇的是另一個(gè)選項(xiàng),那么這里就可以調(diào)整順序了。

  (5)選中“備份數(shù)據(jù)庫(完整)”然后單擊“下一步”按鈕,系統(tǒng)將轉(zhuǎn)到定義完整備份任務(wù)的界面,如圖:

  這個(gè)界面實(shí)在太長了,我把任務(wù)欄隱藏了都顯示不完,出現(xiàn)了滾動條,這里我們選擇要進(jìn)行備份的數(shù)據(jù)庫,選擇為每個(gè)數(shù)據(jù)庫創(chuàng)建備份文件,文件保存在C盤Backup目錄下,擴(kuò)展名是bak,出于安全起見,我們可以選中“驗(yàn)證備份完整性”,當(dāng)然也可以不選。在SQL2008中提供了壓縮備份的新特性,使得備份文件更小,備份速度更快,這里我們就是由壓縮備份。最后是選擇執(zhí)行計(jì)劃,我這里選的是每周日晚上0點(diǎn)的時(shí)候執(zhí)行。

  (6)單擊“下一步”按鈕,進(jìn)入差異備份任務(wù)的設(shè)置界面,和上一步的界面是一樣的,操作也是一樣的,計(jì)劃這里我們可以選擇除了周日以外的每天進(jìn)行差異備份,如圖:

  (7)單擊“下一步”按鈕,進(jìn)入選擇報(bào)告選項(xiàng),這里我們可以將這個(gè)維護(hù)計(jì)劃的執(zhí)行報(bào)告寫入文本文件中,也可以講報(bào)告通過電子郵件發(fā)送給管理員。如果要發(fā)送郵件的話,那么需要配置SQL Server的數(shù)據(jù)庫郵件,另外還要設(shè)置SQL Server代理中的操作員,關(guān)于郵件通知操作員的配置網(wǎng)上也講的比較多,我這里就不詳述了。

  (8)單擊“下一步”按鈕,進(jìn)入“完成該向?qū)?rdquo;的界面,系統(tǒng)列出了向?qū)б瓿傻墓ぷ鳎鐖D:

  (9)單擊“完成”按鈕,向?qū)?chuàng)建對應(yīng)的SSIS包和SQL作業(yè):

  (10)完成后,我們再刷新下對象資源管理器,我們可以看到對應(yīng)的維護(hù)計(jì)劃和該計(jì)劃對應(yīng)的作業(yè):

  現(xiàn)在維護(hù)計(jì)劃是創(chuàng)建好了,急著想看看執(zhí)行后的效果如何,不需要等到晚上12點(diǎn)去了,在“作業(yè)”下面,右擊DbBackupPlan.Subplan_1,選擇“作業(yè)開始步驟”系統(tǒng)便立即執(zhí)行該作業(yè),系統(tǒng)運(yùn)行完成后,我們便可在C:\Backup文件夾下面有我們做的完整備份的備份文件。

  以上的操作可以是純粹的無鍵盤操作,不用寫任何腳本,只需要點(diǎn)點(diǎn)鼠標(biāo)即可。

  這里需要注意的是,我們?nèi)绻皇侵苋罩贫ǖ脑摼S護(hù)計(jì)劃,那么制定該維護(hù)計(jì)劃前一定要做個(gè)完整備份,而且該備份至少要保留到下周,不然到時(shí)候出了問題,發(fā)現(xiàn)只有這幾個(gè)工作日的差異備份,而上一次的完整備份又被刪了,那就郁悶了。

  除了使用維護(hù)計(jì)劃向?qū)б酝猓覀冞€可以直接新建維護(hù)計(jì)劃,也可以修改意見創(chuàng)建的維護(hù)計(jì)劃。我們就以修改維護(hù)計(jì)劃為例。對于前面創(chuàng)建好的完整備份+ 差異備份維護(hù)計(jì)劃,現(xiàn)在我們需要每周對數(shù)據(jù)庫備份進(jìn)行一次清理,在完整備份完成后,要將1個(gè)月前的備份刪除掉。那么我們只需要修改一下維護(hù)計(jì)劃即可,具體操作如下:

  (1)右擊我們的維護(hù)計(jì)劃,在彈出式菜單中選擇“修改”選項(xiàng),系統(tǒng)將新建一個(gè)選項(xiàng)卡來顯示當(dāng)前的維護(hù)計(jì)劃。如圖:

  左下角是可用的維護(hù)計(jì)劃組件,右下面板是維護(hù)計(jì)劃的流程設(shè)置面板,其上面就是該計(jì)劃的子計(jì)劃列表。

  (2)選中Subplan_1子計(jì)劃,也就是每周完整備份的子計(jì)劃,將“清除歷史記錄”任務(wù)從工具箱中拖拽到計(jì)劃面板中,然后在面板中單擊“備份數(shù)據(jù)庫(完整)”組件,系統(tǒng)將顯示一個(gè)綠色的箭頭,將綠色箭頭拖拽到“清除歷史記錄”組件上,如圖:

  也就是說在成功完整備份了數(shù)據(jù)庫后,接下來才執(zhí)行清除歷史記錄任務(wù)。

  (3)右擊“清除歷史記錄”任務(wù),在彈出式菜單中選擇“編輯”選項(xiàng),系統(tǒng)將彈出清除歷史記錄任務(wù)設(shè)置窗口,如圖:

  這里既可以清除歷史記錄日志,也可以刪除硬盤上的歷史數(shù)據(jù)。這里我們要刪除4周前的歷史備份數(shù)據(jù),單擊“確定”回到計(jì)劃面板,我們可以看到原本“清除歷史記錄”任務(wù)上的小紅叉不見了。單擊“保存”按鈕,該計(jì)劃便保存起來。(說明:我在SQL2008中文版虛擬機(jī)里面做的時(shí)候一旦修改維護(hù)計(jì)劃,保存的時(shí)候就報(bào)錯災(zāi)難性故障,不過我本機(jī)的英文版是正常的,不知道是我虛擬機(jī)的問題還是中文版的Bug,反正在英文版里面是對的。)

  這樣修改后,以后我們都不用手動去刪除那些很久以前的數(shù)據(jù)庫備份了,系統(tǒng)在執(zhí)行完備份后就會刪除那些滿足條件的備份數(shù)據(jù)。

610588