下面是个备份服务器中全部数据库的脚本,想把备份文件改成 “数据库名”+“备份日期”+“.bak”的形式,如何改?
例如,原来备份fcda数据库,生成的备份文件名字为fcda.bak
更改后想达到的效果是,例如今天是2010年02月05日,哪么生成的备份文件名字就为fcda100205.bak/*------------------------------------------------------------------------------------------------------*/
/*原来备份脚本*/
declare @dbname varchar(256)
declare @sqldump varchar(8000)
declare @sqldbcc varchar(8000)
declare @sqlbak varchar(8000)
declare cur cursor local for
select name from master..sysdatabases
open cur
fetch next from cur into @dbname
while @@fetch_status=0
begin
       /*数据库备份*/
set @sqlbak='backup database '+@dbname+' to disk=''e:\databak\'+@dbname+'.bak'''+'with init'
exec(@sqlbak)
        /* */
fetch next from cur into @dbname
end
close cur
deallocate cur

解决方案 »

  1.   

    declare @dt varchar(8)
    set @dt=convert(varchar(8),getdate(),112)set @sqlbak='backup database '+@dbname+' to disk=''e:\databak\'+@dbname+@dt+'.bak'''+'with init' 
      

  2.   

    declare @dbname varchar(256) 
    declare @sqldump varchar(8000) 
    declare @sqldbcc varchar(8000) 
    declare @sqlbak varchar(8000) 
    declare cur cursor local for 
    select name from master..sysdatabases 
    open cur 
    fetch next from cur into @dbname 
    while @@fetch_status=0 
    begin 
          /*数据库备份*/ 
    select @dbname = @dbname+right(convert(varchar(10),getdate(),112),6)set @sqlbak='backup database '+@dbname+' to disk=''e:\databak\'+@dbname+'.bak'''+'with init' 
    exec(@sqlbak) 
            /* */ 
    fetch next from cur into @dbname 
    end 
    close cur 
    deallocate cur 
      

  3.   

    --呃 错了
    declare @dbname varchar(256) 
    declare @sqldump varchar(8000) 
    declare @sqldbcc varchar(8000) 
    declare @sqlbak varchar(8000) 
    declare cur cursor local for 
    select name from master..sysdatabases 
    open cur 
    fetch next from cur into @dbname 
    while @@fetch_status=0 
    begin 
          /*数据库备份*/ set @sqlbak='backup database '+@dbname+' to disk=''e:\databak\'+@dbname+right(convert(varchar(10),getdate(),112),6)+'.bak'''+'with init' 
    --exec(@sqlbak) 
            /* */ 
    print @sqlbak
    fetch next from cur into @dbname 
    end 
    close cur 
    deallocate cur