SQL2008实现数据库自动定时备份——维护计划

在SQL Server中出于数据安全的考虑,因此须要按期的备份数据库。而备份数据库通常又是在凌晨时间基本没有数据库操做的时候进行,因此咱们不可能要求管理员 天天守到晚上1点去备份数据库。要实现数据库的定时自动备份,最经常使用的方式就是使用SQL Server代理中的做业。启动SQL Server Agent服务,而后在其中新建做业,做业中添加1个备份步骤,类型是T-SQL脚本,而后在命令中输入以下SQL语句,该语句实现了对数据库 TestDB1的完整备份,备份文件在C盘Backup文件夹中,文件名就是TestDB1+当时备份的日期字符串.bak。数据库

declare   @name   varchar ( 250
set   @name = ' C:\Backup\TestDB1_ ' +  
convert ( varchar ( 50 ), getdate (), 112 ) + ' .bak '  
BACKUP   DATABASE   [ TestDB1 ]   TO   
DISK   =   @name  
WITH NOFORMAT, NOINIT,  
NAME
= N ' TestDB1-完整 数据库 备份 '
SKIP, NOREWIND, NOUNLOAD

建立好步骤之后,接下来就是建立计划,建立计划的操做十分简单,界面上说明的很详细了,我就很少说了。另外还能够配置警报和通知,不过通常不多用这 个。安全

使用SQL做业中执行SQL脚本进行备份的方法虽然已经很简单了,可是至少仍是要去写BACKUP脚本,这点有些人以为不爽,那有没有更简单,更懒 的方法来实现数据库的自动定时备份呢?有,那就是“维护计划”。工具

“维护计划”是在SSMS的对象资源管理中“管理”节点下面。使用维护计划能够经过可视化的操做,只点点鼠标就能够建立数据库维护的SSIS包,然 后仍然是经过SQL Server做业的方式来运行。维护计划与前面说到的备份方法本质的不一样就是:维护计划是SSIS包,上面的是T-SQL脚本。spa

假设咱们如今有一个生产系统的数据库须要进行备份,因为数据库中的数据不少,数据文件很大,若是每次都进行完整备份那么硬盘占用了很大空间,并且备 份时间很长,维护起来也很麻烦。对此咱们能够采用完整备份+差别备份的方式,每周日进行一次完整备份,天天晚上进行一次差别备份。使用差别备份能够减少备 份文件的大小,同时还能够提升备份的速度,不过缺点就是必须使用上一次完整备份的文件和差别备份的文件才能还原差别备份时刻的数据库,单独只有差别备份文 件是没有意义。.net

下面我来说一下如何经过维护计划来实现完整备份+差别备份:设计

(1)在SSMS的对象资源管理器中右击“维护计划”,选择“维护计划向导”,系统将弹出向导窗口,如图:代理

image

这里向导已经告诉咱们维护计划到底可以干什么了,其中最后一项“执行数据库备份”正是咱们所须要的。日志

(2)点击“下一步”按钮,进入选择计划属性窗口,输入计划的名称,因为咱们的计划包括2部分:完整备份和差别备份,这2部分的执行计划是不同 的,一个是一周执行一次,另外一个是一天执行一次,因此要选择“每项任务单独计划”,如图:code

image

(3)单击“下一步”按钮,选择维护任务,这里就是能够在维护计划中执行的任务,若是你想执行的任务在这里没有,那就仍是不用维护计划来作,本身写 SSIS包或者SQL语句吧。咱们要执行的任务都在这里,选中这2个任务,如图:对象

image

(4)单击“下一步”进入选择维护任务顺序的界面,这里咱们能够看到选中的任务出如今列表中,可是咱们并不能调整其顺序,那是由于在步骤2中咱们选 择的是每项任务单独计划,因此这2个任务是独立的,没有前后顺序可言。若是当时选择的是另外一个选项,那么这里就能够调整顺序了。

image

(5)选中“备份数据库(完整)”而后单击“下一步”按钮,系统将转到定义完整备份任务的界面,如图:

image

这个界面实在太长了,我把任务栏隐藏了都显示不完,出现了滚动条,这里咱们选择要进行备份的数据库,选择为每一个数据库建立备份文件,文件保存在C盘 Backup目录下,扩展名是bak,出于安全起见,咱们能够选中“验证备份完整性”,固然也能够不选。在SQL2008中提供了压缩备份的新特性,使得 备份文件更小,备份速度更快,这里咱们就是由压缩备份。最后是选择执行计划,我这里选的是每周日晚上0点的时候执行。

(6)单击“下一步”按钮,进入差别备份任务的设置界面,和上一步的界面是同样的,操做也是同样的,计划这里咱们能够选择除了周日之外的天天进行差 异备份,如图:

image

(7)单击“下一步”按钮,进入选择报告选项,这里咱们能够将这个维护计划的执行报告写入文本文件中,也能够讲报告经过电子邮件发送给管理员。若是 要发送邮件的话,那么须要配置SQL Server的数据库邮件,另外还要设置SQL Server代理中的操做员,关于邮件通知操做员的配置网上也讲的比较多,我这里就不详述了。

image

(8)单击“下一步”按钮,进入“完成该向导”的界面,系统列出了向导要完成的工做,如图:

image

(9)单击“完成”按钮,向导将建立对应的SSIS包和SQL做业:

image

(10)完成后,咱们再刷新下对象资源管理器,咱们能够看到对应的维护计划和该计划对应的做业:

image

如今维护计划是建立好了,急着想看看执行后的效果如何,不须要等到晚上12点去了,在“做业”下面,右击 DbBackupPlan.Subplan_1,选择“做业开始步骤”系统便当即执行该做业,系统运行完成后,咱们即可在C:\Backup文件夹下面有 咱们作的完整备份的备份文件。

以上的操做能够是纯粹的无键盘操做,不用写任何脚本,只须要点点鼠标便可。

这里须要注意的是,咱们若是不是周日制定的该维护计划,那么制定该维护计划前必定要作个完整备份,并且该备份至少要保留到下周,否则到时候出了问 题,发现只有这几个工做日的差别备份,而上一次的完整备份又被删了,那就郁闷了。

除了使用维护计划向导之外,咱们还能够直接新建维护计划,也能够修改意见建立的维护计划。咱们就以修改维护计划为例。对于前面建立好的完整备份+ 差别备份维护计划,如今咱们须要每周对数据库备份进行一次清理,在完整备份完成后,要将1个月前的备份删除掉。那么咱们只须要修改一下维护计划便可,具体 操做以下:

(1)右击咱们的维护计划,在弹出式菜单中选择“修改”选项,系统将新建一个选项卡来显示当前的维护计划。如图:

image

左下角是可用的维护计划组件,右下面板是维护计划的流程设置面板,其上面就是该计划的子计划列表。

(2)选中Subplan_1子计划,也就是每周完整备份的子计划,将“清除历史记录”任务从工具箱中拖拽到计划面板中,而后在面板中单击“备份数 据库(完整)”组件,系统将显示一个绿色的箭头,将绿色箭头拖拽到“清除历史记录”组件上,如图:

image

也就是说在成功完整备份了数据库后,接下来才执行清除历史记录任务。

(3)右击“清除历史记录”任务,在弹出式菜单中选择“编辑”选项,系统将弹出清除历史记录任务设置窗口,如图:

image

这里既能够清除历史记录日志,也能够删除硬盘上的历史数据。这里咱们要删除4周前的历史备份数据,单击“肯定”回到计划面板,咱们能够看到本来“清 除历史记录”任务上的小红叉不见了。单击“保存”按钮,该计划便保存起来。(说明:我在SQL2008中文版虚拟机里面作的时候一旦修改维护计划,保存的 时候就报错灾难性故障,不过我本机的英文版是正常的,不知道是我虚拟机的问题仍是中文版的Bug,反正在英文版里面是对的。)

这样修改后,之后咱们都不用手动去删除那些好久之前的数据库备份了,系统在执行完备份后就会删除那些知足条件的备份数据。

另外若是用过SSIS的人应该知道,一个任务在完成时是绿色箭头,若是是失败时是红色箭头,咱们这里也能够设置,若是上一步骤失败,那么将执行什么 操做,双击绿色箭头,在弹出的对话框中选择约束选项中的值为“失败”便可。如图:

image

在维护计划中也能够设置很复杂的逻辑运算和执行流程,就和SSIS设计同样的,毕竟本质上他们都是在设计SSIS包。

相关文章
相关标签/搜索