内部環境でバックアップを作成および削除する新しい方法を設定しています。サーバー上のスペースは大きな問題なので、データベースごとにバックアップを作成して古いものを手続き的に削除する方法を実際に見つけなければなりません。
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
実際に何かを見せてくれると思っていましたが、それは無効です。これを実行すると、単に「コマンドが正常に完了しました」と表示されます。意味がありません。