數據文件的備份,可以通過Job,設置Schedule自動管理,而手工編寫TSQL腳本,實現起來十分靈活,並且能夠分布式備份。在數據量不大時,你使用backup database,能夠把數據庫備份到指定的硬盤中,但是,當數據庫增長到很大的size時,數據庫的備份文件,即使壓縮,也會達到很大,甚至超過單個磁盤的存儲空間,這樣,就必需考慮分布式備份,把數據庫的備份分為N份,每一份都存儲在不同的硬盤上。
一:手寫TSQL 腳本
1,自動備份
每周進行一次Database 的 Full Backup,設置 Schedule Interval 為Weekly
use master go declare @FileName nvarchar(256) set @FileName = N'D:\SQLBackupFolder\TestDB_FullBackup_'+CONVERT(nvarchar(max),getdate(),112)+N'.bak' BACKUP DATABASE [TESTDB] TO DISK = @FileName WITH Compression ,INIT ,SKIP ,Format GO
每天進行一次Database的 Differential Backup,設置Schedule Interval 為Daily
use master go declare @FileName nvarchar(256) set @FileName = N'D:\SQLBackupFolder\TestDB_DiffBackup_'+CONVERT(nvarchar(max),getdate(),112)+N'.bak' BACKUP DATABASE [TESTDB] TO DISK = @FileName WITH Differential ,Compression ,INIT ,SKIP ,Format GO
2,自動刪除備份文件
數據庫的備份保留4周,28天,將早於28天前的數據庫備份刪除,每周執行一次,設置Schedule Interval為Weekly
DECLARE @ExpireDate DATETIME SET @ExpireDate=dateadd(day,-28,GETDATE()); DECLARE @SearchFolder nvarchar(100) SET @SearchFolder=N'D:\SQLBackupFolder\'; EXECUTE master.dbo.xp_delete_file 0,@SearchFolder,N'bak',@ExpireDate,1;
xp_delete_file 能夠刪除標准的bak文件,(RESTORE HEADERONLY可以返回數據的),不能刪除普通文件。
存儲過程 xp_delete_file 有5個參數,按照順序,參數代表的含義是:
- File Type = 0 for backup files or 1 for report files.
- Folder Path = The folder to delete files. The path must end with a backslash "\".
- File Extension = This could be 'BAK' or 'TRN' or whatever you normally use.
- Date = The cutoff date for what files need to be deleted.
- Subfolder = 0 to ignore subfolders, 1 to delete files in subfolders.
3,進行備份文件分布式存儲的腳本

二,使用維護計划(Maintenance Plan)
1,使用Backup Database Task 對數據庫進行Full Backup 和 Differential Backup
- Backup Type:選擇Full 進行完整備份,選擇Differential進行差異備份。
- Database(s):選擇進行備份的數據庫
- Backup Component:選擇Database,對數據庫進行備份
- 勾選“Create a sub-directory for each database”,在Folder中設置backup devices存儲的Floder,在Backup file extension中指定backup file的擴展名
- 在 Set Backup Compression中選擇Compress Backup,對backup進行壓縮。
2,使用Maintenance Cleanup Task,將備份文件刪除
在Delete files of the following type 中選擇Backup files
在Search folder and delete files based on an extension 設置Folder(Backup files存儲的folder),File Extension(backup files的擴展名),勾選 “Include first-level subfolders",
File Age:設置被刪除的backup files的創建時間
例如,該Task 會將位於 D:\TestBackupFolder\TestDB 下,創建時間早於4周前的 xxxxx.bak 刪除。
三,使用SSIS Task來實現,Maintenance Plan 實際上也是通過SSIS Task 來實現的
在Other Tasks Catalog下,存在Backup Database Task 和 Maintenance Cleanup Task,設置和Maintenace Plan相同。