I have a solution using XP__CMDSHELL_, I know enabling XP_CMDSHELL is a security risk.... Sorry!.
-- Use this script inside your Job
DECLARE @SQL VARCHAR(800),
@ID INT,
@MaxID INT,
@BackupPath VARCHAR(500)
declare @temp TABLE
(ID INT IDENTITY,
backupPath VARCHAR(500)
)
INSERT INTO @temp
SELECT 'DEL '+physical_device_name
FROM msdb.dbo.backupmediafamily mf
INNER JOIN msdb.dbo.backupset bs
ON bs.media_set_id = mf.media_set_id
WHERE DATEDIFF(dd,backup_finish_date,GETDATE()) = 1
AND type = 'D' -- Database backup
SELECT @id = 1, @maxID = MAX(ID)
FROM @temp
WHILE @id <= @maxID
BEGIN
SELECT @BackupPath = (SELECT backupPath FROM @temp WHERE ID = @id)
EXEC XP_CMDSHELL @BackupPath
SET @Id = @id + 1
END
It can be done better using powershell script.
Another option is
- Create a text file on any location.
- Create a SQL Server Job as follows
You need to create two Job steps both should be of type Operating System(CmdExec)
Step1: use the following command
SQLCMD -C -S ServerName -q "SELECT 'DEL '+physical_device_name FROM msdb.dbo.backupmediafamily mf INNER JOIN msdb.dbo.backupset bs ON bs.media_set_id = mf.media_set_id WHERE DATEDIFF(dd,backup_finish_date,GETDATE()) = 1 AND type = 'D'"
-o the-location-of-the-text-file-you-created-earlier
Step2: Click open and choose the file you created earlier
- Schedule it to run every day.