元になる情報は、Remove SQL Backup Files from your Azure Storage となります。
SQL Server 2012 SP1 CU4 以降では、Azure ストレージに直接バックアップを取得できるようになりました。
SQL Server Backup to URL
SQL Server 2012 SP1 CU4 で機能が追加された際には、メンテナンスプランを使用してのバックアップ取得先として指定することはできなかったのですが、SQL Server 2014 でメンテナンスプランの取得先として、URL (Azure ストレージ) を指定できるようになりました。
SQL Server 2014 では「管理対象バックアップ」(マネージ バックアップ) という機能が追加され、一定のルールに基づいて自動的にバックアップを取得できるようになりました。
Windows Azure への SQL Server マネージ バックアップ
この機能では保有期間を設定することができ、バックアップのクリーンアップができるようになっています。
バックアップのクリーンアップですが、メンテナンスプランのメンテナンスクリーンアップタスクでは、Azure ストレージのバックアップのクリーンアップを実施するための仕組みは提供されておらず、自前で実装をする必要があります。
この実装の方法が冒頭で紹介したブログの内容となります。
SQL Server Agent では PowerShell を実行することができるため、Downloads から Windows Azure PowerShell をダウンロードしてインストールすることで、Web PI 経由でなくても Azure PowerShell をインストーすることができるので、ここからモジュールをインストールすることで、SQL Server Agent の PowerShell でクリーンアップをすることができます。
$CleanupTime = [DateTime]::UtcNow.AddHours(-72) $StorageAccountName = "<ストレージアカウント>" $StorageAccountKey = "<ストレージアカウントキー> $context = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey Get-AzureStorageBlob -Container "sqlbackup" -Context $context | Where-Object { $_.LastModified.UtcDateTime -lt $CleanupTime -and $_.BlobType -eq "PageBlob" -and $_.Name -like "*.bak"} | Remove-AzureStorageBlob Get-AzureStorageBlob -Container "sqlbackup" -Context $context | Where-Object { $_.LastModified.UtcDateTime -lt $CleanupTime -and $_.BlobType -eq "PageBlob" -and $_.Name -like "*.trn"} | Remove-AzureStorageBlob
Azure ストレージに格納されたバックアップファイルは UTC で日付が管理されていますので、世代数の管理については UTC の日付で管理する必要があります。
このようなジョブを設定しておくことで、Azure ストレージのバックアップのクリーンアップを実施することができるようになります。