TSQL命令删除超过N小时的备份文件

Ram*_*mya 7 sql-server

任何人都可以用 TSQL 命令帮助我删除超过 N 小时的备份文件吗?

Kin*_*hah 6

请记住,不应使用 T-SQL 进行文件维护。相反,您应该使用 Powershell 删除 /move / copy 等文件。

tsql方式:

使用xp_cmdshell与一起命令FORFILES命令

例如,删除 C:\Backup 目录及其子文件夹中文件修改日期超过 30 天的所有 .sql 文件。

EXEC xp_cmdshell 'FORFILES /p c:\BACKUP /s /m *.sql /d -30 /c "CMD /C del /Q /F @FILE"'
Run Code Online (Sandbox Code Playgroud)

免责声明启用 xp_cmdshell 存在安全风险,并且没有多少公司允许这样做。

Powershell方式-->这应该是正确的方法!!

可以在technet上找到完整的脚本。

## Delete files older than 90 days

$a = Get-ChildItem C:\Scripts
foreach($x in $a)
    {
        $y = ((Get-Date) - $x.CreationTime).Days
        if ($y -gt 90 -and $x.PsISContainer -ne $True)
            {$x.Delete()}
    }
Run Code Online (Sandbox Code Playgroud)


Jam*_*son 5

如果您想以务实的方式删除文件,您可以使用master.dbo.xp_delete_file扩展存储过程,但通常不建议使用它,因为这些类型的过程计划在 SQL Server 的未来版本中删除,尽管我不确定何时会删除.

如果这在部署后可能会存在很长时间,我建议您使用 a,maintenance plan因为此功能是内置的。