在维护计划里面的备份,好像只能指定某月的某一天,或者是每10天但是不能指定一个月里的某几天,比如我要的1,11,21那想要实现我说的每月1,11,21号备份,应该怎么设置呢

解决方案 »

  1.   


    定时作业的制定企业管理器 
    --管理 
    --SQL Server代理 
    --右键作业 
    --新建作业 
    --"常规"项中输入作业名称 
    --"步骤"项 
    --新建 
    --"步骤名"中输入步骤名 
    --"类型"中选择"Transact-SQL 脚本(TSQL)" 
    --"数据库"选择执行命令的数据库 
    --"命令"中输入要执行的语句: 
                           EXEC 存储过程名 ... --该存储过程用于创建表 --确定 
    --"调度"项 
    --新建调度 
    --"名称"中输入调度名称 
    --"调度类型"中选择你的作业执行安排 
    --如果选择"反复出现" 
    --点"更改"来设置你的时间安排  
    然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行 设置方法: 
    我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.
      

  2.   

    /*******************完整备份作业*******************/
    --完整备份,每周一次
    USE Master
    GO
    declare @str varchar(100)
    set @str='D:\DBtext\jgj\DBABak\FullBak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.bak'
    BACKUP DATABASE [demo] TO DISK=@str
    WITH RETAINDAYS=15,NOFORMAT,NOINIT,
    NAME=N'Demo完整备份',SKIP,NOREWIND,
    NOUNLOAD,STATS=10
    GO
    /*******************差异备份作业*******************/
    --截断日志
    USE Master
    GO
    BACKUP LOG Demo  WITH NO_LOG
    GO
    --收缩日志文件
    USE Demo
    GO
    DBCC SHRINKFILE (N'Demo_log',0,TRUNCATEONLY)
    GO
    --差异备份,每天一次
    USE Master
    GO
    declare @str varchar(100)
    set @str='D:\DBtext\jgj\DBABak\DiffBak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.diff'
    BACKUP DATABASE [Demo] TO DISK=@str
    WITH DIFFERENTIAL,RETAINDAYS=8,NOFORMAT,NOINIT,
    NAME=N'Demo差异备份',SKIP,NOREWIND,
    NOUNLOAD,STATS=10
    GO
    /******************日志备份作业*******************/
    --日志备份,每小时一次
    USE Demo
    GO
    declare @str varchar(100)
    set @str='D:\DBtext\jgj\DBABak\logbak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.trn'
    BACKUP LOG [Demo] TO DISK=@str
    WITH RETAINDAYS=3,NOFORMAT,NOINIT,
    NAME=N'Demo日志备份',SKIP,NOREWIND,
    NOUNLOAD,STATS=10
    GO
    --删除过期的备份文件,每天两次
    declare @str varchar(100),@dir varchar(100),@fileName varchar(30)
    set @dir='del D:\DBtext\jgj\DBABak\'
    set @filename=left(replace(replace(replace(convert(varchar,getdate()-15,20),'-',''),' ',''),':',''),8)
    set @str=@dir+'fullbak'+@filename+'*.bak'
    exec xp_cmdshell @str
    set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),'-',''),' ',''),':',''),8)
    set @str=@dir+'diffbak'+@filename+'*.diff'
    exec xp_cmdshell @str
    set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),'-',''),' ',''),':',''),8)
    set @str=@dir+'logbak'+@filename+'*.trn'
    exec xp_cmdshell @str