通过SQL删除特定备份文件

时间:2013-04-24 09:28:54

标签: sql-server backup

我一直在研究如何通过SQL查询删除特定的备份文件,但我只找到有关“删除早于日期的备份”的结果。那不是我想要的。我想保留旧备份,但我希望能够通过其ID删除特定备份。

我可以轻松删除msdb表中的条目及其给定备份的恢复历史记录,但我希望能够通过SQL查询删除这些文件(我知道他们的完整路径,因为它存储在数据库中),因此它们不会在磁盘中浪费空间。

程序“xp_delete_file”似乎不允许删除特定文件。

我假设如果有删除旧文件的过程,应该有一些方法来删除特定文件。请不要担心这里的安全。

4 个答案:

答案 0 :(得分:20)

可能已经老了但可能对某人有所帮助。 xp_delete_file 可用于删除特定的备份文件。请尝试以下代码:

EXECUTE master.dbo.xp_delete_file 0,N'c:\backup\backup1.bak'

答案 1 :(得分:4)

这就是我需要的。

xp_cmdshell 'del c:\backup\file.bak'

可能需要通过以下方式激活命令:

EXEC sp_configure 'show advanced options', 1
GO

EXEC sp_configure 'xp_cmdshell', 1
GO

RECONFIGURE
GO

答案 2 :(得分:4)

--Define a backup device and physical name. 
USE AdventureWorks2012 ;
GO
EXEC sp_addumpdevice 'disk', 'mybackupdisk', 'c:\backup\backup1.bak' ;
GO
--Delete the backup device and the physical name.
USE AdventureWorks2012 ;
GO
EXEC sp_dropdevice ' mybackupdisk ', 'delfile' ;
GO

http://technet.microsoft.com/en-us/library/ms188711.aspx

答案 3 :(得分:1)

创建一个备份设备,其物理名称指向备份文件:

exec master..sp_addumpdevice @devtype = 'disk',
@logicalname = '<logical_name>',
@physicalname = '<path + physical filename>'

然后,执行:

exec master..sp_dropdevice '<logical_name>', delfile

你的文件已经消失了!

物理文件名可在表格中找到&rs; msdb..backupmediafamily&#39;