0

内部環境でバックアップを作成および削除する新しい方法を設定しています。サーバー上のスペースは大きな問題なので、データベースごとにバックアップを作成して古いものを手続き的に削除する方法を実際に見つけなければなりません。

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実際に何かを見せてくれると思っていましたが、それは無効です。これを実行すると、単に「コマンドが正常に完了しました」と表示されます。意味がありません。

4

1 に答える 1