2011-06-05 48 views
2

我正在使用SQL Server 2005及以上,我想知道是否有办法从默认的SQL备份文件夹中删除特定的备份文件...如何删除请求的备份文件(.bak)?

我可以通过使用下面的查询找到备份文件夹:

EXEC master.dbo.xp_instance_regread 
N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer',N'BackupDirectory' 

,我发现用的是master.dbo.xp_delete_file操作,但问题是,它不能只删除一个文件(所请求的一个)的唯一途径。

有什么想法?

+0

您可以编辑您的问题,包括调用'xp_delete_file'使我们可以告诉你为什么,你指望在调用不工作? – 2011-06-05 17:28:34

+0

到'xp_delete_file'操作的调用是工作,但它只能干净的备份旧的然后请求日期: 'EXECUTE master.dbo.xp_delete_file 0,N'E:\ Database_Backups',N'bak“” 2009年03期-07T16:45:17' ,1' 我寻找一种方式来删除请求的备份文件... – 2011-06-06 05:47:41

回答

1

您可以使用xp_cmdshell产卵一个Windows命令外壳并执行给定的字符串,如:

xp_cmdshell 'del "E:\Database Backups\Some Database Backup.bak"'

与您的代码组合,以确定默认的备份文件夹,您可以构建相应的字符串删除特定的文件。

注意xp_cmdshell默认情况下,出于安全原因锁定(很明显,运行任意的命令字符串会很糟糕)。

+0

的Tx迈克尔,它工作正常,但我不能使用'xp_cmdshell',因为它的安全性问题(在任何合适的公司DBA不会允许自由访问他们的服务器)。 – 2011-06-06 06:35:21