使用SQL删除指定备份文件



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

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

过程"xp_delete_file"似乎不允许删除一个特定的文件。

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

可能老了,但可能会帮助别人。xp_delete_file可用于删除指定的备份文件。试试下面的代码:

EXECUTE master.dbo.xp_delete_file 0,N'c:backupbackup1.bak'
--Define a backup device and physical name. 
USE AdventureWorks2012 ;
GO
EXEC sp_addumpdevice 'disk', 'mybackupdisk', 'c:backupbackup1.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

这就是我需要的。

xp_cmdshell 'del c:backupfile.bak'

可能需要激活该命令,通过:

EXEC sp_configure 'show advanced options', 1
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO

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

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

之后,执行:

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

你的文件不见了!

物理文件名可以在表'msdb.. backupmedifamily '中找到

最新更新