C# で Azure SQL Databaseの自動バックアップ保有期間を変更する

Azure.ResourceManager.Sql を使って、SQL Database の PITR を設定できる。

www.nuget.org

PITR の保有期間を 14 日間に変更するサンプルは次の通り。

using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Sql;
using Azure.ResourceManager.Sql.Models;

const string subscriptionId = "サブスクリプションID";
const string resourceGroupName = "リソースグループ名";
const string serverName = "Azure SQL Server リソース名";
const string databaseName = "データベース名";
const int retentionDays = 14;

var armClient = new ArmClient(new DefaultAzureCredential());

var id = SqlDatabaseResource.CreateResourceIdentifier(
    subscriptionId: subscriptionId,
    resourceGroupName: resourceGroupName,
    serverName: serverName,
    databaseName: databaseName);
SqlDatabaseResource sqlDatabase = await armClient.GetSqlDatabaseResource(id).GetAsync();
Console.WriteLine(sqlDatabase.Data.Name);

BackupShortTermRetentionPolicyResource policy = await sqlDatabase.GetBackupShortTermRetentionPolicyAsync(
    new ShortTermRetentionPolicyName("default"));
Console.WriteLine($"Name:{policy.Data.Name}");
Console.WriteLine($"RetentionDays:{policy.Data.RetentionDays}");
Console.WriteLine($"DiffBackupIntervalInHours:{policy.Data.DiffBackupIntervalInHours}");
Console.WriteLine();

if (policy.Data.RetentionDays != retentionDays)
{
    policy.Data.RetentionDays = retentionDays;
    var operation = await policy.UpdateAsync(
        Azure.WaitUntil.Completed,
        data: policy.Data);
    var response = await operation.WaitForCompletionAsync();
    policy = response.Value;
    Console.WriteLine($"Name:{policy.Data.Name}");
    Console.WriteLine($"RetentionDays:{policy.Data.RetentionDays}");
    Console.WriteLine($"DiffBackupIntervalInHours:{policy.Data.DiffBackupIntervalInHours}");
}

Console.ReadLine();