例如一个库名为aaa的库,要每个小时对aaa库进行备份,可以用backup database aaa to disk='d:\bakup\aaa.bak'来建立一个作业,每小时执行一次,假设执行时间1分钟即可完毕,现在想再弄一个作业,也是每小时执行一次,但是在每个正点过后的10分钟时刻开始执行,如0:10到23:10,这个作业需要做的事情是把正点建立的aaa.bak文件名更改为aaa再加上当前日期和时间的文件名,比如aaa0306_0010.bak、aaa0306_0110.bak、...、aaa0306_2310.bak,这个CMD命令该怎么写呢?

解决方案 »

  1.   

    -- 不用这么麻烦吧? 直接在备份的时候设置文件名就行啦
    declare @bkfile nvarchar(1000)
    set @bkfile='d:\bakup\'
       +substring(convert(char(10),getdate(),112),5,4)+'_'+stuff(convert(char(5),getdate(),108),3,1,'')
       +'.bak'backup database aaa to disk=@bkfile
      

  2.   

    -- 当然, 一定要用改名的方法的话, cmd命令这样写(是sql的xp_cmdshell的方式)declare @a nvarchar(1000), @bkfile nvarchar(1000)
    set @a='d:\bakup\aaa.bak'
    set @bkfile='d:\bakup\'
       +substring(convert(char(10),getdate(),112),5,4)+'_'+stuff(convert(char(5),getdate(),108),3,1,'')
       +'.bak'set @a='rename "'+@a+'" "'+@bkfile+'"'
    exec master..xp_cmdshell @a