当前位置:数据库 > 数据库管理> 正文

SQL Server 数据库自动备份

时间:2014-10-8类别:数据库

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服务为自动启动状态,否则得话是不能够自动执行的。

 

标签:
上一篇下一篇

猜您喜欢

热门推荐