Sql-Server
到 Azure 的託管備份不會在保留期後刪除備份
我確實為我們的數據庫設置了 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。