use master
declare @DbName varchar(60)
declare
@BackSql varchar(1000)
declare myCursor cursor for
SELECT [name] FROM
SYSDATABASES
where [name] not in
('master','model','msdb','tempdb')
order by [name]
open
myCursor
fetch next from myCursor into @DbName
while(@@FETCH_STATUS = 0)
begin
if datename(weekday,
getdate())='星期日' --每周日覆盖上周日的
begin
select @BackSql='Backup
DATABASE ['+@DbName+'] to disk=''C:\DbBackUp\'+@DbName+CONVERT(VARCHAR(10),GETDATE(),120)+'星期日.bak''
with format'
end
else--每天覆盖上一天的
begin
select
@BackSql='Backup DATABASE ['+@DbName+'] to
disk=''C:\database\alldatabase\'+@DbName+CONVERT(VARCHAR(10),GETDATE(),120)+'.bak''
with format'
end
exec(@BackSql)
fetch next from
myCursor into @DbName
end
close myCursor
DEALLOCATE
myCursor