熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

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

2022-06-13   來源: SQL Server 

  專家解答

  雖然有很多種方式可以解決這個問題但是我們可以用TSQL代碼來處理這個文件刪除過程我用xp_cmdshell命令和FORFILES命令來處理類似於你所列出的過程可以從Microsoft TechNet中獲得FORFILES的可靠信息但是在這篇文章中我將涉及FORFILES大量的結構和使用方法來達到你的目的

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

  參數

參數名

描述

/p

路徑

/m

檢索屏蔽 (默認情況下是 **)

/s

如果包含這個參數那麼子目錄將會被遞歸地檢索

/c <command>

針對結果集中的每一個文件執行命令命令必須包含在雙引號中默認情況是cmd c/ echo @file

/d

針對文件選擇的日期范圍把最新的更改日期當作文件標准當/d參數是MM/DD/YYYY格式時滿足指定的+/日期標准的文件也包含在內當文件格式是smallint ( )文件+/文件並且帶著一個更改日期+/從當前日期到該日期的時間數目將會包含在這個文件結果集中

  變量

變量名

描述

@FILE

文件名

@FNAME

無擴展的文件名

@EXT

文件擴展名

@PATH

文件絕對路經

@RELPATH

文件的相對路徑

@ISDIR

如果文件類型是一個目錄那麼判斷是否是TRUE

@FSIZE

文件大小(用字節衡量)

@FDATE

文件上的最新更改日期郵戳

@FTIME

文件上的最新更改時間郵戳

  利用這些參數可以構造下面的例子來解決你刪除備份腳本文件的難題你可以基於更改時間/日期或者備份類型來創建腳本你甚至可以構造能夠同時參照兩種標准的腳本
我們將仔細看看這些可能的腳本記住你將從TSQL代碼內部執行這個過程所以你需要在一個xp_cmdshell訪問中以EXEC xp_cmdshell FORFILES COMMAND的格式總結這些語句請注意在所有的例子中我都會使用/Q 和 /F標簽來作為刪除命令這意味著這個命令將使用安靜模式(/Q)甚至刪除只能讀的文件(/F)


  例子

  當文件更改日期晚於//刪除所有C:\Backup目錄和它子目錄下的sql文件

  EXEC xp_cmdshell FORFILES /p c:\BACKUP /s /m *sql /d // /c CMD /C del /Q /F @FILE

  當文件更改日期多於天時刪除所有C:\Backup目錄和它的子目錄下的sql文件

  EXEC xp_cmdshell FORFILES /p c:\BACKUP /s /m *sql /d /c CMD /C del /Q /F @FILE

  當文件更改日期多於天且文件名以F_打頭時刪除所有C:\Backup目錄和它的子目錄下的sql文件

  EXEC xp_cmdshell FORFILES /p c:\BACKUP /s /m F_*sql /d /c CMD /C del /Q /F @FILE


From:http://tw.wingwit.com/Article/program/SQLServer/201311/22432.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.