使用FORFILES命令來刪除SQL Server備份

來源:互聯網
上載者:User
雖然有很多種方式可以解決這個問題,但 是我們可以用T-SQL代碼來處理這個檔案刪除過程。我用xp_cmdshell命令和FORFILES命令來處理類似於你所列出的過程。可以從 Microsoft TechNet中獲得FORFILES的可靠資訊,但是在這篇文章中,我將涉及FORFILES大量的結構和使用方法來達到你的目的。

  該FORFILES命令將選取檔案的一個子集並且針對這個子集執行一個命令。這個命令需要下面的參數和接受下面的變數。

  參數

參數名 描述
/p 路徑
/m 檢索屏蔽 (預設情況下是 *.*)
/s 如果包含這個參數,那麼子目錄將會被遞迴地檢索。
/c <command> 針對結果集中的每一個檔案執行命令,命令必須包含在雙引號中,預設情況是"cmd c/ echo @file"
/d 針 對檔案選擇的日期範圍,把最新的更改日期當作檔案標準。當/d參數是MM/DD/YYYY格式時,滿足指定的+/-日期標準的檔案也包含在內。當檔案格式 是smallint (-32,768 - 32,768)檔案+/-檔案並且帶著一個更改日期+/-時,從當前日期到該日期的時間數目將會包含在這個檔案結果集中。

  變數

變數名 描述
@FILE 檔案名稱
@FNAME 無擴充的檔案名稱
@EXT 副檔名
@PATH 檔案絕對路經
@RELPATH 檔案的相對路徑
@ISDIR 如果檔案類型是一個目錄,那麼判斷是否是TRUE
@FSIZE 檔案大小(用位元組衡量)
@FDATE 檔案上的最新更改日期郵戳
@FTIME 檔案上的最新更改時間郵戳

  利用這些參數可以構造下面的例子來解決你刪除備份指令檔的難題。你可以基於更改時間/日期或者備份類型來建立指令碼。你甚至可以構造能夠同時參照兩種標準的指令碼。

   我們將仔細看看這些可能的指令碼。記住,你將從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"'

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.