當前位置: 首頁 > 技術分享  > 開發技術 > 數據庫應用

SQL Server 數據庫定時自動備份

2018/6/24 10:29:38 人評論

在SQL Server中出于數據安全的考慮,所以需要定期的備份數據庫。而備份數據庫一般又是在凌晨時間基本沒有數據庫操作的時候進行,所以我們不可能要求管理員 每天守到晚上1點去備份數據庫。要實現數據庫的定時自動備份,最常用的方式就是使用SQL Server代理中的作業。啟動S…

 在SQL Server中出于數據安全的考慮,所以需要定期的備份數據庫。而備份數據庫一般又是在凌晨時間基本沒有數據庫操作的時候進行,

所以我們不可能要求管理員 每天守到晚上1點去備份數據庫。要實現數據庫的定時自動備份,最常用的方式就是使用SQL Server代理中的作業。

啟動SQL Server Agent服務,然后在其中新建作業,作業中添加1個備份步驟,類型是T-SQL腳本,然后在命令中輸入如下SQL語句,該語句

實現了對數據庫 TestDB1的完整備份,備份文件在C盤Backup文件夾中,文件名就是TestDB1+當時備份的日期字符串.bak。

復制代碼
復制代碼
[email protected](250) 
[email protected]='C:\Backup\TestDB1_'+ 
convert(varchar(50),getdate(),112)+'.bak' 
BACKUPDATABASE[TestDB1]TO  
[email protected] 
WITH NOFORMAT, NOINIT,  
NAME = N'TestDB1-完整 數據庫 備份', 
SKIP, NOREWIND, NOUNLOAD
復制代碼
復制代碼

創建好步驟以后,接下來就是創建計劃,創建計劃的操作十分簡單,界面上說明的很詳細了,我就不多說了。另外還可以配置警報和通知,不過

一般很少用這個。使用SQL作業中執行SQL腳本進行備份的方法雖然已經很簡單了,但是至少還是要去寫BACKUP腳本,這點有些人覺得不爽,

那有沒有更簡單,更懶的方法來實現數據庫的自動定時備份呢?有,那就是“維護計劃”。

 

“維護計劃”是在SSMS的對象資源管理中“管理”節點下面。使用維護計劃可以通過可視化的操作,只點點鼠標就可以創建數據庫維護的SSIS包,

然后仍然是通過SQL Server作業的方式來運行。維護計劃與前面說到的備份方法本質的不同就是:維護計劃是SSIS包,上面的是T-SQL腳本。

假設我們現在有一個生產系統的數據庫需要進行備份,由于數據庫中的數據很多,數據文件很大,如果每次都進行完整備份那么硬盤占用了很大

空間,而且備 份時間很長,維護起來也很麻煩。對此我們可以采用完整備份+差異備份的方式,每周日進行一次完整備份,每天晚上進行一次差

異備份。使用差異備份可以減小備 份文件的大小,同時還可以提高備份的速度,不過缺點就是必須使用上一次完整備份的文件和差異備份的文件

才能還原差異備份時刻的數據庫,單獨只有差異備份文件是沒有意義。

 

下面我來講一下如何通過維護計劃來實現完整備份+差異備份:

(1)在SSMS的對象資源管理器中右擊“維護計劃”,選擇“維護計劃向導”,系統將彈出向導窗口,如圖:

image

這里向導已經告訴我們維護計劃到底能夠干什么了,其中最后一項“執行數據庫備份”正是我們所需要的。

(2)點擊“下一步”按鈕,進入選擇計劃屬性窗口,輸入計劃的名稱,由于我們的計劃包括2部分:完整備份和差異備份,這2部分的執行計劃是

不一樣的,一個是一周執行一次,另一個是一天執行一次,所以要選擇“每項任務單獨計劃”,如圖:

image

(3)單擊“下一步”按鈕,選擇維護任務,這里就是可以在維護計劃中執行的任務,如果你想執行的任務在這里沒有,那就還是不用維護計劃來

做,自己寫SSIS包或者SQL語句吧。我們要執行的任務都在這里,選中這2個任務,如圖:

image

(4)單擊“下一步”進入選擇維護任務順序的界面,這里我們可以看到選中的任務出現在列表中,但是我們并不能調整其順序,那是因為在步驟2

中我們選 擇的是每項任務單獨計劃,所以這2個任務是獨立的,沒有先后順序可言。如果當時選擇的是另一個選項,那么這里就可以調整順序了。

 

image

(5)選中“備份數據庫(完整)”然后單擊“下一步”按鈕,系統將轉到定義完整備份任務的界面,如圖:

image

這個界面實在太長了,我把任務欄隱藏了都顯示不完,出現了滾動條,這里我們選擇要進行備份的數據庫,選擇為每個數據庫創建備份文件,文

件保存在C盤 Backup目錄下,擴展名是bak,出于安全起見,我們可以選中“驗證備份完整性”,當然也可以不選。在SQL2008中提供了壓縮備

份的新特性,使得備份文件更小,備份速度更快,這里我們就是由壓縮備份。最后是選擇執行計劃,我這里選的是每周日晚上0點的時候執行。

 

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

天進行差異備份,如圖:

image

(7)單擊“下一步”按鈕,進入選擇報告選項,這里我們可以將這個維護計劃的執行報告寫入文本文件中,也可以講報告通過電子郵件發送給管理

員。如果 要發送郵件的話,那么需要配置SQL Server的數據庫郵件,另外還要設置SQL Server代理中的操作員,關于郵件通知操作員的配置網

上也講的比較多,我這里就不詳述了。

image

(8)單擊“下一步”按鈕,進入“完成該向導”的界面,系統列出了向導要完成的工作,如圖:

image

(9)單擊“完成”按鈕,向導將創建對應的SSIS包和SQL作業:

image

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

image

現在維護計劃是創建好了,急著想看看執行后的效果如何,不需要等到晚上12點去了,在“作業”下面,右擊 DbBackupPlan.Subplan_1,選擇

“作業開始步驟”系統便立即執行該作業,系統運行完成后,我們便可在C:\Backup文件夾下面有 我們做的完整備份的備份文件。

以上的操作可以是純粹的無鍵盤操作,不用寫任何腳本,只需要點點鼠標即可。

這里需要注意的是,我們如果不是周日制定的該維護計劃,那么制定該維護計劃前一定要做個完整備份,而且該備份至少要保留到下周,不然到

時候出了問題,發現只有這幾個工作日的差異備份,而上一次的完整備份又被刪了,那就郁悶了。

除了使用維護計劃向導以外,我們還可以直接新建維護計劃,也可以修改意見創建的維護計劃。我們就以修改維護計劃為例。對于前面創建好的

完整備份+ 差異備份維護計劃,現在我們需要每周對數據庫備份進行一次清理,在完整備份完成后,要將1個月前的備份刪除掉。那么我們只需

要修改一下維護計劃即可,具體 操作如下:

(1)右擊我們的維護計劃,在彈出式菜單中選擇“修改”選項,系統將新建一個選項卡來顯示當前的維護計劃。如圖:

image

左下角是可用的維護計劃組件,右下面板是維護計劃的流程設置面板,其上面就是該計劃的子計劃列表。

(2)選中Subplan_1子計劃,也就是每周完整備份的子計劃,將“清除歷史記錄”任務從工具箱中拖拽到計劃面板中,然后在面板中單擊“備份

數據庫(完整)”組件,系統將顯示一個綠色的箭頭,將綠色箭頭拖拽到“清除歷史記錄”組件上,如圖:

image

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

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

image

這里既可以清除歷史記錄日志,也可以刪除硬盤上的歷史數據。這里我們要刪除4周前的歷史備份數據,單擊“確定”回到計劃面板,我們可以

看到原本“清 除歷史記錄”任務上的小紅叉不見了。單擊“保存”按鈕,該計劃便保存起來。(說明:我在SQL2008中文版虛擬機里面做的時候

一旦修改維護計劃,保存的 時候就報錯災難性故障,不過我本機的英文版是正常的,不知道是我虛擬機的問題還是中文版的Bug,反正在英

文版里面是對的。)

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

本文轉載自:http://www.cnblogs.com/zhangq723/archive/2012/03/13/2394102.html

相關技術

  • MSSQL2016 SSMS18 閃退解決方法

    服務器最近安裝MSSQL 2016,安裝包中沒有集成Microsoft SQL Server Management Studio。需要另外下載,官網找到SSMS-Setup-CHS.exe,選擇15.0.18118.0版本。安裝完后,雙擊桌面 Microsoft SQL Server Management Studio 18 無響應,一閃而過。使用管理員權限,問題依舊。經…

    2019/6/10 22:30:33
  • 4種C#SQL語句寫法

    記錄4種C#SQL語句寫法,個人比較喜歡用第二種string.Format方法;(1)拼接產生SQL語句: string sql = "insert into czyb(yhm,mm,qx) values(" + txtName.Text + "," + txtPassword.Text + "," + cmbPriority.Text + ")";…

    2018/2/1 12:15:34
  • MSSQL游標CURSOR應用實例

    我們使用SQL語句處理數據時,可能會碰到一些需要循環遍歷某個表并對其進行相應的操作(添加、修改、刪除),這時我們就需要用到咱們在編程中常常用的for或foreach,但是在SQL中寫循環往往顯得那么吃力,翻遍網上的資料,找不到幾個正確的并能執行的循環處理數據的方法,在…

    2017/12/8 8:38:13
  • SQL臨時表建立,檢查,刪除

    SQL臨時表建立,檢查,刪除--建立臨時表CREATE TABLE #TEMP( AAA VARCHAR(20),I INT,BBB DATETIME)SELECT * FROM #TEMP--檢查臨時表IF …

    2015/10/22 9:58:02

共有條評論 網友評論

驗證碼: 看不清楚?
    广东26选5开奖