我一直在研究如何通过SQL查询删除特定的备份文件,但我只找到有关“删除早于日期的备份”的结果。那不是我想要的。我想保留旧备份,但我希望能够通过其ID删除特定备份。
我可以轻松删除msdb表中的条目及其给定备份的恢复历史记录,但我希望能够通过SQL查询删除这些文件(我知道他们的完整路径,因为它存储在数据库中),因此它们不会在磁盘中浪费空间。
程序“xp_delete_file”似乎不允许删除特定文件。
我假设如果有删除旧文件的过程,应该有一些方法来删除特定文件。请不要担心这里的安全。
答案 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
答案 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;