Sql-Server
新的系統儲存過程 sys.xp_delete_files 與 sys.xp_delete_file 有何不同?
SQL Server 2019 引入了一個新的(未記錄的)系統儲存過程:
sys.xp_delete_files
這個新的擴展儲存過程到底是做什麼的?它與
xp_delete_file
多年來一直存在的有什麼不同?它取代xp_delete_file
嗎?
首先,較舊的
xp_delete_file
(也未記錄)非常有限:
- 它只能刪除備份(.bak / .trn)或報告(??)文件(我相信它實際上會掃描它們的第一部分以驗證文件“類型”
- 它僅按文件副檔名(即不是特定文件,或基於萬用字元的任何匹配項)和基於比提供的日期更早的日期刪除
- 它很挑剔,需要在目錄/文件夾上加上斜杠
- 它只能刪除文件,不能刪除文件夾
- 它可以通過子文件夾遞歸(好的,所以這個不是限制)
有關它的更多資訊,請參閱:
較新
sys.xp_delete_files
的語法如下:EXEC sys.xp_delete_files 'fileSpec.01' [, 'fileSpec.02' [, ...] ] ;
筆記:
- 文件類型/副檔名無關緊要
- 適用於標準 DOS 萬用字元:
*
= 零個或多個任意字元?
= 恰好是任何字元之一
- 不通過子目錄遞歸(用於刪除文件)(這是唯一的“限制”)
- 可以指定多個完全限定的路徑規範,每個都能夠處理萬用字元
- 可以刪除整個非空子文件夾結構!!(可能需要執行幾次才能刪除所有內容)
- 必須是
sysadmin
固定伺服器角色的成員才能執行(使用模組簽名而不是將應用程序登錄添加到sysadmin
固定伺服器角色;請參閱:安全輕鬆地使用高級權限而不授予任何人:伺服器級)- 向後移植到 SQL Server 2017(可能在 CU18 中)
完整的細節請看我的文章: