備份和還原 第四篇:數據庫自動備份,自動刪除備份文件


數據文件的備份,可以通過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,進行備份文件分布式存儲的腳本

View Code

二,使用維護計划(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相同。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM