之前見別人一直在玩批處理,最近公司也在用,就順便學習下:
- 首先創建一個 txt文件 命名BackupDataBase 並修改后綴為.bat
- 編寫兩條命令:
sqlcmd -S . -E -Q "EXEC master.dbo.usp_BackupDatabase" %執行存儲過程實現備份%
forfiles /p "D:\Backup" /s /m *.BAK /d -7 /c "cmd /c del @path" %刪除7天以前的備份%
注意:這里有個坑就是,要備份的路徑一定要弄成英文,中文的話識別不了,導致無法備份,這也是我搗鼓很久才知道的。
3.在master數據庫下新建一個存儲過程,腳本如下:
use [master] go create proc usp_BackupDatabase @diskPath as NVARCHAR(300) as begin SET @diskPath='D:\Backup\Inferno_' --設置備份路徑 +CONVERT(VARCHAR, GETDATE(),112)+'_' +REPLACE(CONVERT(VARCHAR, GETDATE(),108),':','')+'.BAK' BACKUP DATABASE Inferno TO DISK = @diskPath WITH FORMAT; --設置要備份的數據庫 end
這樣一個備份批處理就弄好了,我們可以直接雙擊執行批處理文件,就可以看到備份文件了。如果執行不成功的話,可以在數據庫執行存儲過程試試,看看提示什么異常。
emm~ 最后呢,就是我們不可能自己天天手動執行,一般會弄一個計划程序,定時執行批處理文件就OK了。
最后來張效果圖,哈哈~