13

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

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

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

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

4

4 回答 4

30

可能年纪大了,但可能会帮助某人。xp_delete_file 可用于删除特定的备份文件。试试下面的代码:

EXECUTE master.dbo.xp_delete_file 0,N'c:\backup\backup1.bak'
于 2014-09-19T19:36:33.667 回答
5
--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

于 2014-01-11T19:55:56.213 回答
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
于 2013-04-24T09:57:13.287 回答
1

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

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

然后,执行:

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

你的文件不见了!

物理文件名可以在表“msdb..backupmediafamily”中找到

于 2016-01-19T13:54:55.717 回答