適用対象:
Azure SQL Managed Instance
この記事では、Azure portal、PowerShell、Azure CLI を使用して Azure SQL Managed Instance の 長期バックアップリテンション期間 (LTR) ポリシーを構成する方法と、Azure Storage からバックアップを表示および復元する方法について説明します。 LTR ポリシーを使用すると、データベース バックアップを個別の Azure Blob Storage コンテナー内に最大 10 年間自動的に保持できます。 その後、これらのバックアップを使用してデータベースを復旧できます。
前提条件
PowerShell のための環境を準備します。
重要
PowerShell Azure Resource Manager (AzureRM) モジュールは、2024 年 2 月 29 日に非推奨になりました。 今後のすべての開発では、Az.Sql モジュールを使用する必要があります。 ユーザーは、引き続きサポートと更新を行うために、AzureRM から Az PowerShell モジュールに移行することをお勧めします。 AzureRM モジュールは維持またはサポートされなくなりました。 Az PowerShell モジュールと AzureRM モジュールのコマンドの引数は、ほぼ同じです。 互換性の詳細については、「新しい Az PowerShell モジュールの概要」を参照してください。
アクセス許可
LTR バックアップを表示および復元するには、次のロールのメンバーである必要があります。
- サブスクリプションの所有者ロール、または
- SQL Managed Instance 共同作成者ロールまたは
- 次のアクセス許可を持つカスタム役割:
Microsoft.Sql/locations/longTermRetentionManagedInstanceBackups/read
Microsoft.Sql/locations/longTermRetentionManagedInstances/longTermRetentionManagedInstanceBackups/read
Microsoft.Sql/locations/longTermRetentionManagedInstances/longTermRetentionDatabases/longTermRetentionManagedInstanceBackups/read
LTR バックアップを削除するには、次のいずれかのロールのメンバーである必要があります。
- サブスクリプションの所有者ロール、または
- 次のアクセス許可を持つカスタム ロール:
Microsoft.Sql/locations/longTermRetentionManagedInstances/longTermRetentionDatabases/longTermRetentionManagedInstanceBackups/delete
Note
SQL Managed Instance 共同作成者ロールには、LTR バックアップを削除するアクセス許可がありません。
Azure ロールベースのアクセス制御 (RBAC) のアクセス許可は、"サブスクリプション" または "リソース グループ" のいずれかのスコープで付与できます。 ただし、削除されたインスタンスに属する LTR バックアップにアクセスするには、そのインスタンスの "サブスクリプション" スコープにアクセス許可を付与する必要があります。
Microsoft.Sql/locations/longTermRetentionManagedInstances/longTermRetentionDatabases/longTermRetentionManagedInstanceBackups/delete
長期保有ポリシーを作成する
ご利用のサービス レベルのリテンション期間より長く自動バックアップを保持するように SQL Managed Instance を構成できます。
Azure portal で、 SQL マネージド インスタンスを選択し、[バックアップ] を選択 します。 [ 保持ポリシー ] タブで、長期的なバックアップ保有ポリシーを設定または変更するデータベースを選択します。 変更は、選択されていないデータベースには適用されません。
[ポリシーの構成] ウィンドウで、週単位、月単位、または年単位のバックアップに必要な保有期間を指定します。 長期的なバックアップ保有期間を設定しないことを示すには、保有期間を "0" にします。
完了したら、 [適用] を選択します。
重要
長期的なバックアップ保持ポリシーを有効にすると、最初のバックアップが表示され、復元に使用できるようになるまでに最大 7 日かかる場合があります。 LTR バックアップ周期の詳細については、「 長期バックアップ保有期間」を参照してください。
SQL Managed Instance データベースの詳細を取得するには、az sql midb show コマンドを実行します。
az sql midb show /
--resource-group mygroup /
--managed-instance myinstance /
--name mymanageddb /
--subscription mysubscription
LTR ポリシーを作成するには、az sql midb ltr-policy set コマンドを実行します。 次の例では、週単位のバックアップについて 12 週間の長期保有ポリシーを設定します。
az sql midb ltr-policy set /
--resource-group mygroup /
--managed-instance myinstance /
--name mymanageddb /
--weekly-retention "P12W"
次の使用例は、週単位のバックアップに 12 週間、年間バックアップに 5 年間、毎年の LTR バックアップを取得する 4 月 15 日の週に保持ポリシーを設定します。
az sql midb ltr-policy set /
--resource-group mygroup /
--managed-instance myinstance /
--name mymanageddb /
--weekly-retention "P12W" /
--yearly-retention "P5Y" /
--week-of-year 16
# get the SQL Managed Instance
$subId = "<subscriptionId>"
$instanceName = "<instanceName>"
$resourceGroup = "<resourceGroupName>"
$dbName = "<databaseName>"
Connect-AzAccount
Select-AzSubscription -SubscriptionId $subId
$instance = Get-AzSqlInstance -Name $instanceName -ResourceGroupName $resourceGroup
# create LTR policy with WeeklyRetention = 12 weeks. MonthlyRetention and YearlyRetention = 0 by default.
$LTRPolicy = @{
InstanceName = $instanceName
DatabaseName = $dbName
ResourceGroupName = $resourceGroup
WeeklyRetention = 'P12W'
}
Set-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy @LTRPolicy
# create LTR policy with WeeklyRetention = 12 weeks, YearlyRetention = 5 years and WeekOfYear = 16 (week of April 15). MonthlyRetention = 0 by default.
$LTRPolicy = @{
InstanceName = $instanceName
DatabaseName = $dbName
ResourceGroupName = $resourceGroup
WeeklyRetention = 'P12W'
YearlyRetention = 'P5Y'
WeekOfYear = '16'
}
Set-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy @LTRPolicy
バックアップを表示してバックアップから復元する
使用できる長期バックアップを Azure portal で表示するには、次の手順のようにします。
Azure portal で、SQL マネージド インスタンスを選択し、[バックアップ] を選択 します。
[利用可能なバックアップ] タブで、利用可能なバックアップを表示するデータベースを選択します。
[管理] を選択します。
[バックアップの管理] ウィンドウで、利用可能なバックアップを確認します。
このページでバックアップを選んで [復元] を選ぶことにより、復元することもできます。
または、Azure portal を使って長期保有からバックアップを復元するには、次の手順のようにします。
Azure portal にサインインします。
データベースの復元先のターゲット SQL Managed Instance に移動します。
[概要] ページで、[+ 新しいデータベース] を選んで、[Azure SQL マネージド データベースを作成する] ページを開きます。
[Azure SQL マネージド データベースを作成する] ページの [基本] タブの [プロジェクトの詳細] で、サブスクリプションとリソース グループの詳細を指定します。 次に、[データベースの詳細] で、復元するデータベースの新しい名前を指定します。 適切な SQL マネージド インスタンスがドロップダウン リストに表示されていることを確認します。
[次へ: データ ソース >] を選択します。
[データ ソース] タブで、[既存のデータを使用する] の [特定の時点に復元] を選びます。 ソース データベースを含むサブスクリプション、リソース グループ、および SQL マネージド インスタンスを指定します。
[マネージド データベース] ドロップダウン リストから、復元するデータベースを選択します。 次に、データベースを復元する時点を選択します。 ソース インスタンスとターゲット インスタンスは、同じインスタンスでも 2 つの異なるインスタンスでもかまいません。 [ 次へ: その他の設定] >を選択します。
[ 追加の設定 ] タブで、ソース データベースからアイテム保持ポリシーを継承するチェック ボックスをオンにすることができます。 または、[ 保持の構成] を選択して [ ポリシーの構成 ] ページを開き、復元されたデータベースに必要なアイテム保持ポリシーを設定することもできます。 終わったら、 [確認と作成] を選択します。
[確認および作成] で検証が成功したら、[作成] を選んでデータベースを復元します。
このアクションにより、復元プロセスが開始されます。このプロセスでは、新しいデータベースが作成され、指定した時点における元のデータベースのデータが入力されます。 復旧プロセスの詳細については、「復旧時間」を参照してください。
LTR ポリシーを表示する
インスタンス内の 1 つのデータベースの LTR ポリシーを表示するには、az sql midb ltr-policy show コマンドを実行します。
az sql midb ltr-policy show \
--resource-group mygroup \
--managed-instance myinstance \
--name mymanageddb
LTR バックアップを表示する
インスタンス内の LTR バックアップを表示するには、az sql midb ltr-backup list コマンドを使用します。
az sql midb ltr-backup list \
--resource-group mygroup \
--___location eastus2 \
--managed-instance myinstance
LTR バックアップから復元する
LTR バックアップからデータベースを復元するには、az sql midb ltr-backup restore コマンドを実行します。
az sql midb ltr-backup show を実行すると、backup-id
を取得できます。
後で使用するには、backup-id
コマンドで az sql db ltr-backup show
の変数を作成します。
get_backup_id=$(az sql midb ltr-backup show
--___location eastus2 \
--managed-instance myinstance \
--database mydb \
--name "3214b3fb-fba9-43e7-96a3-09e35ffcb336;132292152080000000" \
--query 'id' \
--output tsv)
LTR バックアップからデータベースを復元する
az sql midb ltr-backup restore \
--dest-database targetmidb \
--dest-mi myinstance \
--dest-resource-group mygroup \
--backup-id $get_backup_id
重要
インスタンスが削除された後に LTR バックアップから復元するには、インスタンスのサブスクリプションをスコープとしたアクセス許可が必要であり、そのサブスクリプションがアクティブである必要があります。
Note
ここから、SQL Server Management Studio を使用して、復元されたデータベースに接続し、必要なタスクを実行できます。たとえば、復元されたデータベースからデータを少し抽出して既存のデータベースにコピーしたり、既存のデータベースを削除し、復元されたデータベースの名前を既存のデータベース名に変更したりできます。
ポイントインタイム リストアをご覧ください。
LTR ポリシーを表示する
次の例では、1 つのデータベースのインスタンス内の LTR ポリシーの一覧を表示する方法を示します。
# gets the current version of LTR policy for a database
$LTRPolicy = @{
InstanceName = $instanceName
DatabaseName = $dbName
ResourceGroupName = $resourceGroup
}
Get-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy @LTRPolicy
次の例では、1 つのインスタンス上にあるすべてのデータベースの LTR ポリシーの一覧を表示する方法を示します。
# gets the current version of LTR policy for all of the databases on an instance
$Databases = Get-AzSqlInstanceDatabase -ResourceGroupName $resourceGroup -InstanceName $instanceName
$LTRParams = @{
InstanceName = $instanceName
ResourceGroupName = $resourceGroup
}
foreach($database in $Databases.Name){
Get-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy @LTRParams -DatabaseName $database
}
LTR ポリシーをクリアする
この例では、データベースから LTR ポリシーを消去する方法を示します。
# remove the LTR policy from a database
$LTRPolicy = @{
InstanceName = $instanceName
DatabaseName = $dbName
ResourceGroupName = $resourceGroup
RemovePolicy = $true
}
Set-AzSqlInstanceDatabaseBackupLongTermRetentionPolicy @LTRPolicy
LTR バックアップを表示する
次の例は、インスタンス内の LTR バックアップを一覧表示する方法を示しています。
$instance = Get-AzSqlInstance -Name $instanceName -ResourceGroupName $resourceGroup
# get the list of all LTR backups in a specific Azure region
# backups are grouped by the logical database id, within each group they are ordered by the timestamp, the earliest backup first
Get-AzSqlInstanceDatabaseLongTermRetentionBackup -Location $instance.Location
# get the list of LTR backups from the Azure region under the given SQL managed instance
$LTRBackupParam = @{
Location = $instance.Location
InstanceName = $instanceName
}
Get-AzSqlInstanceDatabaseLongTermRetentionBackup @LTRBackupParam
# get the LTR backups for a specific database from the Azure region under the given SQL managed instance
$LTRBackupParam = @{
Location = $instance.Location
InstanceName = $instanceName
DatabaseName = $dbName
}
Get-AzSqlInstanceDatabaseLongTermRetentionBackup @LTRBackupParam
# list LTR backups only from live databases (you have option to choose All/Live/Deleted)
$LTRBackupParam = @{
Location = $instance.Location
DatabaseState = 'Live'
}
Get-AzSqlInstanceDatabaseLongTermRetentionBackup @LTRBackupParam
# only list the latest LTR backup for each database
$LTRBackupParam = @{
Location = $instance.Location
InstanceName = $instanceName
OnlyLatestPerDatabase = $true
}
Get-AzSqlInstanceDatabaseLongTermRetentionBackup @LTRBackupParam
LTR バックアップから復元する
LTR バックアップから復元する例を次に示します。 このインターフェイスは変更されませんでしたが、リソース ID パラメーターには LTR バックアップ リソース ID が必要になりました。
# restore a specific LTR backup as an P1 database on the instance $instanceName of the resource group $resourceGroup
$LTRBackupParam = @{
Location = $instance.Location
InstanceName = $instanceName
DatabaseName = $dbname
OnlyLatestPerDatabase = $true
}
$ltrBackup = Get-AzSqlInstanceDatabaseLongTermRetentionBackup @LTRBackupParam
$RestoreLTRParam = @{
TargetInstanceName = $instanceName
TargetResourceGroupName = $resourceGroup
TargetInstanceDatabaseName = $dbName
FromLongTermRetentionBackup = $true
ResourceId = $ltrBackup.ResourceId
}
Restore-AzSqlInstanceDatabase @RestoreLTRParam
重要
インスタンスが削除された後に LTR バックアップから復元するには、インスタンスのサブスクリプションをスコープとしたアクセス許可が必要であり、そのサブスクリプションがアクティブである必要があります。 また、オプションの -ResourceGroupName パラメーターを省略する必要もあります。
Note
ここから、SQL Server Management Studio を使用して、復元されたデータベースに接続し、必要なタスクを実行できます。たとえば、復元されたデータベースからデータを少し抽出して既存のデータベースにコピーしたり、既存のデータベースを削除し、復元されたデータベースの名前を既存のデータベース名に変更したりできます。
ポイントインタイム リストアをご覧ください。
LTR バックアップを削除する
LTR ポリシーを使用して、特定のデータベースに対して保持されているバックアップを削除します。
重要
LTR バックアップの削除は、元に戻せません。 インスタンスが削除された後に LTR バックアップを削除するには、サブスクリプション スコープのアクセス許可が必要です。 Azure Monitor では、"長期保有バックアップを削除します" という操作をフィルター処理することで、それぞれの削除に関する通知を設定できます。 アクティビティ ログには、要求を行ったユーザーとタイミングに関する情報が含まれています。 詳しい手順については、アクティビティ ログ アラートの作成に関するページを参照してください。
- Azure Portal で SQL Managed Instance に移動します。
-
[バックアップ] を選択します。 特定のデータベースに使用可能な LTR バックアップを表示するには、[使用可能な LTR バックアップ] 列の下にある [管理] を選択します。 選択したデータベースに使用可能な LTR バックアップの一覧を示すウィンドウが表示されます。
- 表示されている [使用可能な LTR バックアップ] ウィンドウで、使用可能なバックアップを確認します。 削除するバックアップを選択します。
[削除] を選択します。
az sql midb ltr-backup list を実行すると、バックアップの name
を取得します。
LTR バックアップを削除するには、az sql midb ltr-backup delete コマンドを実行します。
az sql midb ltr-backup delete \
--___location eastus2 \
--managed-instance myinstance \
--database mymanageddb \
--name "3214b3fb-fba9-43e7-96a3-09e35ffcb336;132292152080000000"
この例では、バックアップの一覧から最も古い LTR バックアップを削除する方法を示します。 このサンプルでは、特定の SQL Managed Instance の下にある Azure リージョンから、特定のデータベースの LTR バックアップの一覧を取得します。
# remove the earliest backup
# get the LTR backups for a specific database from the Azure region under the given SQL managed instance
$LTRBackupParam = @{
Location = $instance.Location
InstanceName = $instanceName
DatabaseName = $dbName
}
$ltrBackups = Get-AzSqlInstanceDatabaseLongTermRetentionBackup @LTRBackupParam
$ltrBackup = $ltrBackups[0]
Remove-AzSqlInstanceDatabaseLongTermRetentionBackup -ResourceId $ltrBackup.ResourceId
制限事項
次の制限が適用されます。
-
SQL Server 2022 更新ポリシーで構成されたインスタンスから作成されたデータベース バックアップは、SQL Server 2022、SQL Server 2025、または Always-up-to-date 更新ポリシーで構成されたインスタンスに復元できます。
-
SQL Server 2025 更新ポリシーで構成されたインスタンスから取得されたデータベース バックアップは、SQL Server 2025 または Always-up-to-date 更新ポリシーで構成されたインスタンスに復元できますが、SQL Server 2022 更新ポリシーで構成されたインスタンスには復元できません。
-
Always-up-to-date 更新ポリシーで構成されたインスタンスから取得されたデータベース バックアップは、Always-up-to-date 更新ポリシーで構成されたインスタンスにのみ復元できます。
関連コンテンツ