本文阐述:使用MS SQL代理的作业实现自动定时备份数据库
1、检查SQLSERVERAGENT代理是否已启动
打开控制面板->服务:查看SQLSERVERAGENT服务是否已启动,保证启动状态。
2、登录MS SQL,右键新建作业
3、新建作业
左边的选择页,共有6个菜单,分别是:常规、步骤、计划、警报、通知、目标
主要填写完常规、步骤和计划即可。
常规:填写作业名称,我填写test
步骤:定义定时执行的SQL语句
计划:定义何时执行
4、点击选择页:步骤-->新建
粘贴SQL语句:
SQL语句:
declare @dir nvarchar(2000),@name nvarchar(100),@cmd nvarchar(2000);
set @dir='F:\dbBackup\';
set @name= convert(char(10),getdate(),21);
set @dir = @dir +@name+ '\';
set @cmd = 'mkdir ' + @dir
exec sp_configure 'show advanced options', 1 --允许配置高级选项
reconfigure --重新配置
exec sp_configure 'xp_cmdshell', 1 --启用xp_cmdshell
reconfigure --重新配置
exec xp_cmdshell @cmd
exec sp_configure 'xp_cmdshell', 0 --执行完成后出于安全考虑可以将xp_cmdshell关闭
declare @db nvarchar(2000)
,@last nvarchar(2000),@filename nvarchar(2000)
set @last='_'+@name+'.bak'
set @db='test'
set @filename=@dir+@db+@last
backup database @db to disk=@filename
print '数据库['+@db+']备份为:'+@filename
print ''
此SQL语句首先根据当前年月日在F:\dbBackup\目类下,创建一个文件夹,如2021-07-20,
最后5行语句定义了备份的数据库,如下语句定义备份test数据库。
set @db='test'
set @filename=@dir+@db+@last
backup database @db to disk=@filename
print '数据库['+@db+']备份为:'+@filename
print ''
当有多个数据库时,可在最后增加该5句语句,并更改数据库名称。如下语句将同时备份test,test1数据库:
declare @dir nvarchar(2000),@name nvarchar(100),@cmd nvarchar(2000);
set @dir='F:\dbBackup\';
set @name= convert(char(10),getdate(),21);
set @dir = @dir +@name+ '\';
set @cmd = 'mkdir ' + @dir
exec sp_configure 'show advanced options', 1 --允许配置高级选项
reconfigure --重新配置
exec sp_configure 'xp_cmdshell', 1 --启用xp_cmdshell
reconfigure --重新配置
exec xp_cmdshell @cmd
exec sp_configure 'xp_cmdshell', 0 --执行完成后出于安全考虑可以将xp_cmdshell关闭
declare @db nvarchar(2000)
,@last nvarchar(2000),@filename nvarchar(2000)
set @last='_'+@name+'.bak'
set @db='test'
set @filename=@dir+@db+@last
backup database @db to disk=@filename
print '数据库['+@db+']备份为:'+@filename
print ''
set @db='test1'
set @filename=@dir+@db+@last
backup database @db to disk=@filename
print '数据库['+@db+']备份为:'+@filename
print ''
点击:分析,分析语句是否错误

5、点击选择页:计划-->新建,设定本作业何时定时执行

名称:计划的名称,随便写
计划类型:可选重复执行、一次执行、空闲执行等
频率:可选每天、每周、每月
执行频率是每天时,可设置在每天何时执行
执行频率是每周时,可设置在周几执行
时间的设置可以说是非常的强大!
如下我设置的是:每天在凌晨1点执行1次,并且服务器不死,执行不终止!
