建立SQL Server Express 的定期自動備份

最近因為工作上的需要,開始了跟sql server的親密接觸。這才發現express版本並沒有提供自動備份的功能,一切都需要手工操作。

都甚麼年代了,竟然還需要手工操作。根據網路上谷哥大神的指示,這才發現原來,express上的agent套件是個裝飾品。

如果express版本要備份的話就只能自己寫程式來使用。歷經千辛萬苦、這才真的完成整個自動備份的過程。

基本上,自動備份需要兩個程式來互相呼叫。一個是用bat檔案、另一個是用T-SQL語法。來達成自動備份的目的

我的作法如下:

1.T-SQL語法

 

GO
DECLARE
@backupTime VARCHAR(20)
DECLARE
@fileName VARCHAR(1000)
SELECT
@backupTime=(CONVERT(VARCHAR(8), GETDATE(), 112) +REPLACE(CONVERT(VARCHAR(5), GETDATE(), 114), ':', ''))
SELECT
@fileName='F:\Database_Backup\DB_'+@backupTime+'.bak'
backup database DBName to disk=@fileName

GO

 

@fileName='F:\Database_Backup(用來設定備份檔案存放位置請自行設定)\DB(備份檔案的前綴字)_'+@backupTime+'.bak' 

backup database DBName(資料庫名稱) to disk=@fileName 資料庫名稱請自行修改為你所要備份的資料庫,不然系統出現錯誤問題本人概不負責

然後將上面的程式用筆記本另外存檔為*.sql的檔案,副檔名為sql。

2.bat檔案

大家都說只要這段就可以了sqlcmd -S 主機名稱\instance -i c:\XXX.sql

我個人搞了半天是沒成功過,後來換用另一個只不過是多加一個參數 sqlcmd -S 主機名稱\instance -E -i c:\XXX.sql

這樣就可以正常備份了

當然~我並沒有寫成.bat的檔案去執行,因為不知道是我笨還是電腦笨。*.bat的檔案可以執行。但是沒有產生備份檔案。

我就索性直接在排程內將上面的指令直接丟進去執行。然後~就很神奇的成功了..........

 

以下為參考網站有疑問的各位可以去看看,也感謝這幾個網站的大大熱情的分享

1.yilin的程式日記

 

2.愛力克斯的賣寇蒐福特Blog

3.想。涉。經

4.JERRY技術分享

5.積沙成塔

 

 

 

 

 

全站熱搜

kidspeak 發表在 痞客邦 留言(1) 人氣()