2011-06-05 50 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