利用這些參數可以構造下面的例子來解決你刪除備份腳本文件的難題。你可以基于更改時間/日期或者備份類型來創建腳本。你甚至可以構造能夠同時參照兩種標準的腳本
雖然有很多種方式可以解決這個問題,但是我們可以用T-SQL代碼來處理這個文件刪除過程。我用xp_cmdshell命令和FORFILES命令來處理類似于你所列出的過程。可以從microsoft TechNet中獲得FORFILES的可靠信息,但是在這篇文章中,我將涉及FORFILES大量的結構和使用方法來達到你的目的。
該FORFILES命令將選取文件的一個子集并且針對這個子集執行一個命令。這個命令需要下面的參數和接受下面的變量。
參數
變量
利用這些參數可以構造下面的例子來解決你刪除備份腳本文件的難題。你可以基于更改時間/日期或者備份類型來創建腳本。你甚至可以構造能夠同時參照兩種標準的腳本。
我們將仔細看看這些可能的腳本。記住,你將從T-SQL代碼內部執行這個過程,所以你需要在一個xp_cmdshell訪問中以EXEC xp_cmdshell ‘FORFILES COMMAND’的格式總結這些語句。請注意,在所有的例子中我都會使用/Q 和 /F標簽來作為刪除命令。這意味著這個命令將使用安靜模式(/Q)甚至刪除只能讀的文件(/F)。
例子
當文件更改日期晚于10/18/2008時,刪除所有C:Backup目錄和它子目錄下的.sql文件。
EXEC xp_cmdshell ‘FORFILES /p c:BACKUP /s /m *.sql /d 10/18/2008 /c “CMD /C del /Q /F @FILE”‘
當文件更改日期多于30天時,刪除所有C:Backup目錄和它的子目錄下的.sql文件。
EXEC xp_cmdshell ‘FORFILES /p c:BACKUP /s /m *.sql /d -30 /c “CMD /C del /Q /F @FILE”‘
當文件更改日期多于30天且文件名以”F_”打頭時,刪除所有C:Backup目錄和它的子目錄下的.sql文件。
EXEC xp_cmdshell ‘FORFILES /p c:BACKUP /s /m F_*.sql /d -30 /c “CMD /C del /Q /F @FILE”‘