Sql-Server

新的系統儲存過程 sys.xp_delete_files 與 sys.xp_delete_file 有何不同?

  • August 24, 2020

SQL Server 2019 引入了一個新的(未記錄的)系統儲存過程:

sys.xp_delete_files

這個新的擴展儲存過程到底是做什麼的?它與xp_delete_file多年來一直存在的有什麼不同?它取代xp_delete_file嗎?

首先,較舊的xp_delete_file(也未記錄)非常有限:

  1. 它只能刪除備份(.bak / .trn)或報告(??)文件(我相信它實際上會掃描它們的第一部分以驗證文件“類型”
  2. 它僅按文件副檔名(即不是特定文件,或基於萬用字元的任何匹配項)基於比提供的日期更早的日期刪除
  3. 它很挑剔,需要在目錄/文件夾上加上斜杠
  4. 它只能刪除文件,不能刪除文件夾
  5. 可以通過子文件夾遞歸(好的,所以這個不是限制)

有關它的更多資訊,請參閱:


較新sys.xp_delete_files的語法如下:

EXEC sys.xp_delete_files 'fileSpec.01' [, 'fileSpec.02' [, ...] ] ;

筆記:

  1. 文件類型/副檔名無關緊要
  2. 適用於標準 DOS 萬用字元:
  • *= 零個或多個任意字元
  • ?= 恰好是任何字元之一
  1. 不通過子目錄遞歸(用於刪除文件)(這是唯一的“限制”)
  2. 可以指定多個完全限定的路徑規範,每個都能夠處理萬用字元
  3. 可以刪除整個非空子文件夾結構!!(可能需要執行幾次才能刪除所有內容)
  4. 必須是sysadmin固定伺服器角色的成員才能執行(使用模組簽名而不是將應用程序登錄添加到sysadmin固定伺服器角色;請參閱:安全輕鬆地使用高級權限而不授予任何人:伺服器級
  5. 向後移植到 SQL Server 2017(可能在 CU18 中)

完整的細節請看我的文章:

sys.xp_delete_files 和“允許文件系統列舉”:SQL Server 2019 中的兩個新的未記錄項目

引用自:https://dba.stackexchange.com/questions/258479