特定のデータベースのバックアップを特定の時間で削除したい。また、バックアップフォルダの場所も教えたくありません。クエリはバックアップフォルダのパスを取得し、特定のデータベースの指定された時間のバックアップを削除する必要があります。
これを試して:
DECLARE @BACKUP TABLE (database_name VARCHAR(500),backup_start_date VARCHAR(500),physical_device_name VARCHAR(500))
DECLARE @DATABASE_NAME VARCHAR(MAX),@DATE DATETIME,@BACK VARCHAR(8000)
SET @DATABASE_NAME='database name'
SET @DATE='2016-10-28 09:55:14.000'
INSERT INTO @BACKUP
SELECT
backupset.database_name,
backupset.backup_start_date,
backupmediafamily.physical_device_name
FROM msdb.dbo.backupmediafamily
INNER JOIN msdb.dbo.backupset
ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id
WHERE backupset.database_name=@DATABASE_NAME AND backupset.backup_start_date=@DATE
IF EXISTS(SELECT * FROM @BACKUP)
BEGIN
DECLARE C CURSOR FOR
SELECT 'DEL '+PHYSICAL_DEVICE_NAME FROM @BACKUP
OPEN C
FETCH NEXT FROM C INTO @BACK
WHILE @@FETCH_STATUS=0
BEGIN
EXEC XP_CMDSHELL @BACK
FETCH NEXT FROM C INTO @BACK
END
CLOSE C
DEALLOCATE C
END
ELSE
PRINT 'THE BACKUP FOR '+@DATABASE_NAME+' AT '+cast(@DATE as varchar(200))+' DOES NOT EXIST'
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加