web-dev-qa-db-ja.com

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 [〜#〜]

AzureへのSQLサーバーで管理されたバックアップは、指定された保持日数が経過すると自動的にバックアップを削除することになっていますか、それともカスタムジョブを実装する必要がありますか?

4
user62379

私はこれを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には機能しません。

2
user62379