データベースの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サーバーで管理されたバックアップは、指定された保持日数が経過すると自動的にバックアップを削除することになっていますか、それともカスタムジョブを実装する必要がありますか?
私はこれを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には機能しません。