首页 > 代码库 > backup4:数据库自动备份,自动删除备份文件

backup4:数据库自动备份,自动删除备份文件

一:手写TSQL 脚本

1,自动备份

每周进行一次Database 的 Full Backup,设置 Schedule Interval 为Weekly

use mastergo declare @FileName nvarchar(256)set @FileName = ND:\SQLBackupFolder\TestDB_FullBackup_+CONVERT(nvarchar(max),getdate(),112)+N.bakBACKUP DATABASE [TESTDB] TO  DISK = @FileName WITH    Compression    ,INIT    ,SKIP    ,FormatGO

 每天进行一次Database的 Differential Backup,设置Schedule Interval 为Daily

use mastergo declare @FileName nvarchar(256)set @FileName = ND:\SQLBackupFolder\TestDB_DiffBackup_+CONVERT(nvarchar(max),getdate(),112)+N.bakBACKUP DATABASE [TESTDB] TO  DISK = @FileName WITH    Differential    ,Compression    ,INIT    ,SKIP    ,FormatGO

2,自动删除备份文件

数据库的备份保留4周,28天,将早于28天前的数据库备份删除,每周执行一次,设置Schedule Interval为Weekly

DECLARE @ExpireDate  DATETIMESET @ExpireDate=dateadd(day,-28,GETDATE());DECLARE @SearchFolder nvarchar(100)SET @SearchFolder=ND:\SQLBackupFolder;EXECUTE master.dbo.xp_delete_file 0,@SearchFolder,Nbak,@ExpireDate,1;

 xp_delete_file 能够删除标准的bak文件,(RESTORE HEADERONLY可以返回数据的),不能删除普通文件。

二,使用维护计划(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相同。

技术分享

backup4:数据库自动备份,自动删除备份文件