我将 Azure VM 与 SQL Server 可用性组和 Ola Hallengren 的脚本一起使用。备份工作没有问题,但是我注意到旧的备份文件没有从服务器中删除。
要删除文件,我正在运行此命令;
DECLARE @BackupDir NVARCHAR(4000) = (SELECT BackupDir = dbo.fn_SQLServerBackupDir())
DECLARE @Date DATETIME = DATEADD(DAY, -4, GETDATE())
EXECUTE [master].[dbo].xp_delete_file 0, @BackupDir, 'bak', @Date, 1;
注意:该函数获取 SQL 实例的默认备份位置。
每当我运行此命令时,它都会成功完成,但不会删除任何文件。Ola Hallengren 脚本中包含的清理过程也无法删除文件。
在非 AG 的其他环境中,上述命令以及 Ola Hallengren 脚本中的 Cleanup 可以正常工作。
这让我认为这个问题要么与环境有关,要么与在 AG 中的数据库上执行的备份有关。
以前有没有其他人遇到过这样的事情并且可能能够提供一些见解?
备份存储在 F:\ 驱动器上,它是服务器上的本地磁盘。我还确认已设置正确的权限。目前,我已经为所有人设置了完全控制权。(环境尚未上线)。
我尝试修改函数以\
在备份路径的末尾添加 ,但这并没有解决问题。我已经确认也有满足日期要求的备份。
编辑1: 这是正在运行的备份命令,其中包括@Cleanup 参数,它不会删除文件;
EXECUTE dbo.DatabaseBackup
@Databases = 'USER_DATABASES',
@BackupType = 'Log',
@Verify = 'Y',
@Checksum = 'Y',
@Compress = 'Y',
@LogToTable = 'Y',
@CleanupTime = 0,
@AvailabilityGroupDirectoryStructure = '{DatabaseName}',
@AvailabilityGroupFileName = '{DatabaseName}_{BackupType}_{Partial}_{CopyOnly}_{Year}_{Month}_{Day}_{Hour}{Minute}{Second}_{FileNumber}.{FileExtension}',
@Encrypt = 'Y',
@EncryptionAlgorithm = 'AES_256'
, @ServerCertificate = 'Cert_Name'