SQL Server xp_delete_file 参数

21

谁可以解释SQL Server中xp_Delete_file参数的列表? 我没有找到这个存储过程的MSDN文档。

我从维护计划中得到了xp_Delete_file脚本,但是不理解第一个参数。


@BogdanSahlean。好的,MSDN上没有任何文档。但是没有人知道这些参数和用法,也没有任何非Microsoft参考文献。 - mehdi lotfi
4个回答

41

xp_delete_file有五个参数:

  1. 文件类型 = 0表示备份文件,1表示报告文件。
  2. 文件夹路径 = 要删除的文件夹。路径必须以反斜杠“\”结尾。
  3. 文件扩展名 = 这可以是“BAK”或“TRN”或您通常使用的任何其他扩展名。
  4. 日期 = 删除哪些文件的截止日期。
  5. 子文件夹 = 0表示忽略子文件夹,1表示删除子文件夹中的文件。

来源 如何使用xp_delete_file清除旧备份文件 by Patrick Keisler


5
在至少 SQL Server 2014 中,第二个参数(文件夹路径)可以是一个具体的文件名,这会导致只有该文件被删除,例如:EXEC master.dbo.xp_delete_file 0, 'C:\Backups\SomeDatabaseBackup.bak' - Nick Jones
2
从 SQL Server 2012 开始,由维护计划生成的 xp_delete_file 在文件夹路径中 不会有尾部反斜杠。 - RonJohn

4

继续上面的评论,我已在 SQL Server 2012 SP4 上进行了测试,并确认以下语法 EXEC master.dbo.xp_delete_file 0, 'C:\Some Path\Backup file.bak' 可以正常运行并删除指定的文件。


3

我认为这更加明显,因为我喜欢展示参数:

DECLARE @DeleteDate DATETIME = DATEADD(wk,-2,GETDATE());
DECLARE @ReturnVal int

EXEC @ReturnVal = master.dbo.xp_delete_file 
    @FileType = 0,
    @FolderPath = N'U:\SQLBackups',
    @FileExtension = N'bak',
    @Date = @DeleteDate,
    @Subfolder = 1

print @ReturnVal

0
请注意以下额外信息(在Microsoft Windows环境中测试了SQL Server 2019...对于其他操作系统我无法保证):
  • @Date参数可以包含时间部分;
  • 精确到至少1秒(我没有测试过毫秒),这表明参数的类型至少是datetime
  • 存储过程使用的是修改日期(而不是创建日期)的操作系统属性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接