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=''E:\DbBackUp\'+@DbName+'星期三.bak'' with format' end else--每天覆盖上一天的 begin select @BackSql='Backup DATABASE ['+@DbName+'] to disk=''E:\DbBackUp\'+@DbName+'AutoBack.bak'' with format' end exec(@BackSql) fetch next from myCursor into @DbName end close myCursor DEALLOCATE myCursor