【发布时间】:2019-05-23 16:09:58
【问题描述】:
我正在设置一种在内部环境中创建和删除备份的新方法。服务器上的空间是一个大问题,所以我真的必须找到一种方法来进行备份并从程序上删除每个数据库的旧版本。
我想到了使用 sp_MSforeachdb 并简单地进行备份。成功后,它将删除前一天完成的旧备份。 (我们每晚进行 1 次备份)。
DECLARE @DBOPurpose Varchar(15)
DECLARE @Drive Varchar(1)
Set @DBOPurpose = 'Omnilabs'
DECLARE @command varchar(Max)
Select @command = '
If Exists (Select *
from sys.databases
where name like ''%?''
and name like ''%'+@DBOPurpose+'%'')
BEGIN
EXECUTE master.dbo.xp_create_Subdir '+@Drive+':\SQLBACKUP\'+@DBOPurpose+'
GO
BACKUP DATABASE [?] TO DISK = '+@Drive+':\SQLBackup\'+@DBOPurpose+'_Select Cast(Cast(Year(Getdate())As Varchar(150))+''_''+Cast(month(Getdate())As Varchar(150))+''_''+Cast (Day(Getdate()) As Varchar(150))+''_''+ cast(DATEPART(hour, GETDATE()) as varchar) + '''' + cast(DATEPART(minute, GETDATE()) as varchar)+ '''' + cast(DATEPART(Second, GETDATE()) as varchar)+ ''.bak'' As varchar(150))
END
Print N''TEST''
'
--Select @Command
EXEC sp_MSforeachdb @command
我原以为 Select @Command 实际上会向我展示一些东西,但它为空。当我运行它时,它只是写“命令已成功完成”。一秒钟之内,这没有任何意义。
【问题讨论】:
标签: sql-server-2008 database-backups sp-msforeachdb