Sql-Server

到 Azure 的託管備份不會在保留期後刪除備份

  • March 14, 2016

我確實為我們的數據庫設置了 SQL Server 託管備份。我確實將保留天數定義為 4,但我剛剛檢查了託管備份所在的 azure 儲存帳戶,發現從我設置託管備份之日(2015 年 12 月 1 日)開始,仍然存在所有文件。

我在每個使用者數據庫上使用的 SQL:

   Use msdb;
   GO
   EXEC smart_admin.sp_set_db_backup 
           @database_name='TestDB' 
           ,@retention_days=4 
           ,@credential_name='MyCredential'
           ,@encryption_algorithm ='AES_128'
           ,@encryptor_type= 'Certificate'
           ,@encryptor_name='MyBackupCert'
           ,@enable_backup=1; 

我們將 SQL Server 2014 Enterprise 與 Azure VM 一起使用。

設置有關託管備份的教程和資訊:MSDN

SQL Server 管理的 Azure 備份是否應該在給定的保留天數過去後自動刪除備份,或者我是否需要為此實施自定義作業?

我最終製作了一個使用 powershell 模式執行的 Sql 伺服器代理作業:

# Ps1-script to keep azure storageaccount for managed backups clean

Import-Module Azure

$storageAccount = "STORAGEACCOUNTNAME"
$storageKey = "STORAGEKEY"
$blobContainer = "CONTAINERNAME"

$CleanupTime = [DateTime]::UtcNow.AddDays(-4)
$context = New-AzureStorageContext -StorageAccountName $storageAccount -StorageAccountKey $storageKey
Get-AzureStorageBlob -Container $blobContainer -Context $context | 
Where-Object { $_.LastModified.UtcDateTime -lt $CleanupTime -and $_.BlobType -eq "PageBlob" -and $_.Name -like "*.bak"} |
Remove-AzureStorageBlob
$CleanupTime = [DateTime]::UtcNow.AddDays(-4)
Get-AzureStorageBlob -Container $blobContainer -Context $context | 
Where-Object { $_.LastModified.UtcDateTime -lt $CleanupTime -and $_.BlobType -eq "PageBlob" -and $_.Name -like "*.log"} |
Remove-AzureStorageBlob

這確實會刪除所有超過 4 天的 .bak 和 .log 文件。但是,它不適用於具有活動租約的 blob。

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