SQL Server 数据库自动备份
SQL Server 数据库自动备份设置数据库自动备份我们可以选择两种方式:
1、使用作业代理服务;
2、使用SSMS对象里面的维护计划。
一、通过代理作业设置自动备份数据库
1、观察"对象资源管理器"中的"SQL Server代理"
如果没有启动,则右击"SQL Server代理"—>"启动",启动SQL SERVER代理。
2、使用SQL Server Management Studio打开服务器,选择“SQL Server代理”-》“作业”,右键选择“新建作业”
3、在“新建作业”窗口中,选择“常规”页,设置作业名称。其他属性默认
4、选择“步骤”页,点击“新建”,设置作业步骤
输入步骤名称,类型选择“Transact-SQL脚本(T-SQL)”,选择要备份的数据库,在命令属性中输入如下代码:
DECLARE @strPath NVARCHAR(200)
set @strPath = convert(NVARCHAR(19),getdate(),120)
set @strPath = REPLACE(@strPath, ':' , '-')
set @strPath = ' D:\BACKUP \' +'DB_Bak' +@strPath + '.bak'
BACKUP DATABASE test1 TO DISK = @strPath WITH NOINIT , NOUNLOAD , NOSKIP , STATS = 10, NOFORMAT
注意:D:\BACKUP \表示备份文件的存放目录,DB_Bak表示备份文件以DB_Bak开头。备份文件的格式为“DB_Bakyyyy-mm-dd hh-mi-ss.bak”。
在步骤属性的高级的“成功时要执行的操作”选择“转到下一步”即可,这样“备份当日数据”的步骤已经建立好
5、备份数据的第二个步骤 ------“删除旧有备份”
我们可以设置只保留5天内的备份数据,那么必须删除5天前的数据备份文件。在“备份数据”作业属性窗口的步骤栏目里,建立第二个步骤命名为“删除旧有备份”。同样类型为“T-SQL”,命令窗口里填入一下SQL语句:
DECLARE @OLDDATE DATETIME
SELECT @OLDDATE=GETDATE()-5
EXECUTE master.dbo.xp_delete_file 0,N’D:\BACKUP’,N’bak’,@olddate
此命令会删除“D:\BACKUP”里5天前的.BAK或.TRN格式的文件,不用指定文件名是什么。
因为SQL SERVER的备份文件里包含了时间属性在里面。在步骤属性的高级的“成功时要执行的操作”选择“退出报告成功的作业”即可,这样第二个步骤已经建立好。
6、备份数据作业属性的计划栏目里,设置作业的执行时间
选择执行的周期,例如每天凌晨1点开始执行。
7、检查自动备份结果
在“SQL Server代理”-》“作业”下,可看到新建的作业。选中作业,右键选择“开始工作步骤”可以检验一下,如果成功,则数据备份与自动删除计划成功完成。
二、使用SSMS对象里面的维护计划
1、观察"对象资源管理器"中的"SQL Server代理"
如果没有启动,则右击"SQL Server代理"—>"启动",启动SQL SERVER代理。
2、在“维护计划”上右击,选择“新建维护计划”,然后输入一个名称,这里我们输入默认名称“MaintenancePlan”,然后确定。然后再工具栏中,在“常规”标签中,将“备份数据库任务”拖到设计窗体中,如图示:
3、在设计界面的“备份数据库任务”上双击,然后再弹出的对话框中,设置各种属性:
4、设置完成后,点击确定即可。然后再计划任务中,点击右端的日历小图标,进行自动触发时间设置:
5、然后会出现弹出框,在弹出框中,我们进行如下设置:
6、我们设置为 每晚 22:38触发,然后点击确定,最后点击“ctrl+s”进行保存,就会发现,在维护计划中和sqlServer代理的作业中,会生成两个名称分别为:
MaintenancePlan和MaintenancePlan.Subplan_1的任务计划。添加成功!
三、需要记住的地方
1、你的备份文件的保存路径,已经要存在,数据库是不会给你自动创建路径的,否则会备份失败!
2、就是如果你设置了重复执行本任务计划,那么你一定要让sqlagent服务为自动启动状态,否则得话是不能够自动执行的。