我用SQL企业管理器的作业来调度每两小时自动备份一次数据库,我在作业步骤里的命令是这样的:      
declare            @htwb            varchar(100)                  
     set            @htwb='e:\sjk\sj'+convert(char(8),getdate(),112)+replace(convert(char(6),getdate(),108),':','')+'.bak'          
     backup            database            htwb            to            disk=@htwb            with            init      
这样它会每两小时自动生成一个带时间名的备份文件如:sj200706051800.bak、sj200706052000.bak、sj200706052200.bak、sj200706060000.bak等,我想在with            init    后面添加一条让它自动删除6小时前的备份文件,请问怎么写?本菜鸟水平有限,麻烦大侠尽量写明白点,无限感谢!!!

解决方案 »

  1.   

    declare @sql1 varchar(100)
    declare @sql2 varchar(100)
    set @sql1 =  'e:\sjk\sj'+convert(char(8),getdate(),112)+replace(convert(char(6),getdate(),108),':','')+'.bak'
    set @sql2  = 'del e:\sjk\sj'+convert(char(8),getdate(),112)+replace(convert(char(6),dateadd(hh,-6,getdate()),108),':','')+'.bak'
    backup database  test to disk = @sql1  with init exec xp_cmdshell @sql2
      

  2.   

    declare @sql1 varchar(100)
    declare @sql2 varchar(100)
    set @sql1 =  'e:\sjk\sj'+convert(char(8),getdate(),112)+replace(convert(char(6),getdate(),108),':','')+'.bak'
    set @sql2  = 'del e:\sjk\sj'+convert(char(8),getdate(),112)+replace(convert(char(6),dateadd(hh,-6,getdate()),108),':','')+'.bak'
    backup database  test to disk = @sql1  with init exec xp_cmdshell @sql2
    exec (@sql2)