数据文件的备份,可以通过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,进行备份文件分布式存储的脚本

--bull backup
declare @BackupFileName nvarchar(1024)
set @BackupFileName=N'DB_Name_FullBackupAt_'+FORMAT(getdate(),N'yyyy_MM_dd_HH_mm_ss') declare @Disk1 nvarchar(1024)
declare @Disk2 nvarchar(1024)
declare @Disk3 nvarchar(1024) select @Disk1=N'\\host1\SQLServerBackupFolder\' +@BackupFileName+N'1_.bak'
select @Disk2=N'\\host2\SQLServerBackupFolder\' +@BackupFileName+N'2_.bak'
select @Disk3=N'\\host3\SQLServerBackupFolder\' +@BackupFileName+N'3_.bak' backup database [db_name]
TO disk=@Disk1,
disk=@Disk2,
disk=@Disk3
with
compression,
format,
init,
skip,
stats=5;
go --differential backup
declare @BackupFileName nvarchar(1024)
set @BackupFileName=N'DB_Name_DiffBackupAt_'+FORMAT(getdate(),N'yyyy_MM_dd_HH_mm_ss') declare @Disk1 nvarchar(1024)
declare @Disk2 nvarchar(1024)
declare @Disk3 nvarchar(1024) select @Disk1=N'\\host1\SQLServerBackupFolder\' +@BackupFileName +N'1_.bak'
select @Disk2=N'\\host2\SQLServerBackupFolder\' +@BackupFileName +N'2_.bak'
select @Disk3=N'\\host3\SQLServerBackupFolder\' +@BackupFileName +N'3_.bak' backup database [db_name]
TO disk=@Disk1,
disk=@Disk2,
disk=@Disk3
with
differential,
compression,
format,
init,
skip,
stats=5; --cleanup backup files
declare @ExpireDate DATETIME
set @ExpireDate=dateadd(day,-22,getdate()); declare @Folder1 nvarchar(1024)
declare @Folder2 nvarchar(1024)
declare @Folder3 nvarchar(1024) select @Folder1=N'\\host1\SQLServerBackupFolder\';
select @Folder2=N'\\host2\SQLServerBackupFolder\';
select @Folder3=N'\\host3\SQLServerBackupFolder\'; execute master.dbo.xp_delete_file 0,@Folder1,N'bak',@ExpireDate,1;
execute master.dbo.xp_delete_file 0,@Folder2,N'bak',@ExpireDate,1;
execute master.dbo.xp_delete_file 0,@Folder3,N'bak',@ExpireDate,1;
go

二,使用维护计划(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:数据库自动备份,自动删除备份文件的更多相关文章

  1. SQL SERVER 设置自动备份和删除旧的数据库文件

    打开SQL SERVER MANAGEMENT STUDIO,启动SQL SERVER代理服务(注意在“控制面板-管理工具-服务”中设置SQL SERVER AGENT的启动类型为自动).启动后点击“ ...

  2. SQL_Server2005自动备份与删除—维护计划

    业务背景: 为了方便客户及时自动更新SAP库里面的数据与减少磁盘的空间.所以要在SQL对数据进行自动备份与删除备份.这样可以更加方便管理员的管理,和减少管理员的工作量. 解决思路: 在2005 SQL ...

  3. SQL SERVER 2008 R2 自动备份并删除过期备份数据

        我们的系统维护的过程中肯定需要对数据库进行定期的备份,但是如果定时手工备份的话,不但浪费时间,也不能保证每次都可以按时备份,所以自动备份成为了我们的不二选择,但是定时备份需要定期清理备份文件, ...

  4. Windows 下 MySQL 简单定时自动备份、删除过期备份

    Windows 下 MySQL 简单定时自动备份.删除过期备份 MySQL Workbench 客户端虽然好用,但并不提供自动备份功能.手工备份,确实繁琐. 新建一个 数据库备份文件存放目录,本例为D ...

  5. shell脚本实现数据库自动备份和删除备份

    为了安全起见,我们每天都需要备份数据库,但是备份数据库的时间往往是在凌晨左右,大家都休息,没人使用的时候,这样我们就需要linux系统实现自动备份,即定时自动执行脚本.但是我们又不能让所有的备份一直保 ...

  6. [转载] Oracle在windows下面的自动备份以及删除今天的脚本..

    @echo off echo ================================================ echo Windows环境下Oracle数据库的自动备份脚本 echo ...

  7. linux服务器自动备份与删除postgres数据库数据

    1.先创一个back.sh 文件,授权,然后在下面这个文件添加脚本 export PGPASSWORD='123456'        #这是登录服务器密码cur_time=`date +%Y%m%d ...

  8. 利用bat批处理——实现数据库的自动备份和删除

    之前见别人一直在玩批处理,最近公司也在用,就顺便学习下: 首先创建一个 txt文件 命名BackupDataBase  并修改后缀为.bat 编写两条命令: sqlcmd -S . -E -Q &qu ...

  9. Linux oracle数据库自动备份自动压缩脚本代码

    Linux oracle数据库备份完成后可以自动压缩脚本代码. 复制代码代码如下: #!/bin/bash #backup.sh #edit: www.jbxue.com ##系统名称 sysname ...

  10. 远程linux服务器mysql数据库定期备份和删除

    网上已经有部分关于Linux下定期备份mysql的方法,但是很多步骤不够详细,不适合新手,自己琢磨了很久,终于搞定了. 1.Linux服务器一般是ssh协议,如果本地也是Linux环境,可以直接通过s ...

随机推荐

  1. CRL快速开发框架系列教程五(使用缓存)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  2. SDWebImage源码解读 之 NSData+ImageContentType

    第一篇 前言 从今天开始,我将开启一段源码解读的旅途了.在这里先暂时不透露具体解读的源码到底是哪些?因为也可能随着解读的进行会更改计划.但能够肯定的是,这一系列之中肯定会有Swift版本的代码. 说说 ...

  3. 谈谈JS中的函数节流

    好吧,一直在秋招中,都没怎么写博客了...今天赶紧来补一补才行...我发现,在面试中,讲到函数节流好像可以加分,尽管这并不是特别高深的技术,下面就聊聊吧! ^_^ 备注:以下内容部分来自<Jav ...

  4. BPM配置故事之案例5-必填与水印文本

    物资申请表改好了,但是没过两天老李又找来了. 老李:这个表格每次都是各个部门发给我们,再由我们采购部来填,太影响效率了,以后要让他们自己填. 小明:那就让他们填呗,他们有权限啊. 老李:可是他们说不会 ...

  5. VS2015墙内创建ionic2

    开始学习ionic2,试验各种方法,感觉以下是紧跟rc版本的最佳方案 STEP1 设置cnpm npm install -g cnpm --registry=https://registry.npm. ...

  6. nexus 社区版3.0.2部署、访问

    下载nexus社区办(oss): https://www.sonatype.com/download-oss-sonatype 目前最新版本  nexus-3.0.2-02-win64.zip nex ...

  7. Atitit.研发管理软件公司的软资产列表指南

    Atitit.研发管理软件公司的软资产列表指南 1. Isv模型下的软资产1 2. 实现层面implet1 3. 规范spec层1 4. 法则定律等val层的总结2 1. Isv模型下的软资产 Sof ...

  8. 清除打印机队列中无法清除的任务 & 清空打印池

    故障现象典型表现为以下两种情况 1.当打印任务开始进行时,这些打印任务便被保存在打印作业列表(也称打印队列)内.如果打印机因意外暂停(如打印机未连接)而未完成打印任务,则该打印任务将列入打印队列,并且 ...

  9. SpringMvc中初始化参数绑定

    初始化参数绑定与类型转换很类似,初始化绑定时,主要是参数类型 ---单日期 在处理器类中配置绑定方法  使用@InitBinder注解 在这里首先注册一个用户编辑器 参数一为目标类型   proper ...

  10. 【repost】JS中的异常处理方法分享

    我们在编写js过程中,难免会遇到一些代码错误问题,需要找出来,有些时候怕因为js问题导致用户体验差,这里给出一些解决方法 js容错语句,就是js出错也不提示错误(防止浏览器右下角有个黄色的三角符号,要 ...