次の方法で共有


Azure SQL Managed Instance のデータベースを以前の時点に復元します

適用対象:Azure SQL Managed Instance

この記事では、Azure SQL Managed Instance 内のデータベースについて、ポイントインタイム リストアを実行する方法について説明します。 ポイントインタイム リストアを使うと、特定の以前の時点におけるデータベースのコピーであるデータベースを作成できます。

概要

ポイントインタイム リストアは、復旧シナリオで役立ちます。 たとえば、エラーやエラーが原因で発生したインシデントや、データが正しく読み込まれない場合、重要なデータが削除された場合などです。 また、単純にデータベースのデプロイをテストし、監査する目的で使うこともできます。 データベースの設定によって異なりますが、Azure のバックアップ ファイルは 7 日から 35 日間保持されます。

以下のシナリオでは、ポイントインタイム リストアを使ってデータベースを復元できます。

  • 既存のデータベースから
  • 削除されたデータベースから
  • 同じ SQL マネージド インスタンスまたは別の SQL マネージド インスタンスへ
  • 同じサブスクリプション内の SQL マネージド インスタンス、または別のサブスクリプション内の SQL マネージド インスタンスに対して

次の表に、SQL Managed Instance におけるポイントインタイム リストアのシナリオを示します。

シナリオ Azure portal Azure CLI PowerShell
既存のデータベースを同じ SQL マネージド インスタンスに復元する はい はい はい
既存のデータベースを別の SQL マネージド インスタンスに復元する はい はい はい
削除されたデータベースを同じ SQL マネージド インスタンスに復元する はい はい はい
削除されたデータベースを別の SQL マネージド インスタンスに復元する はい はい はい
既存のデータベースを別のサブスクリプションの SQL マネージド インスタンスに復元する はい はい はい
削除されたデータベースを別のサブスクリプションの SQL マネージド インスタンスに復元する はい はい はい

アクセス許可

データベースを復旧するには、次のいずれかである必要があります。

  • サブスクリプション内の SQL Server 共同作成者ロールまたは SQL Managed Instance 共同作成者ロール (復旧のターゲットによって決まります) のメンバー
  • サブスクリプションの所有者

データベースを別のターゲット サブスクリプションに復元するには、 SQL Managed Instance 共同作成者 ロールにいない場合は、次のアクセス許可も必要です。

  • ソース SQL マネージド インスタンスの Microsoft.Sql/managedInstances/databases/readBackups/action
  • ターゲット SQL マネージド インスタンスの Microsoft.Sql/managedInstances/crossSubscriptionPITR/action

詳細については、Azure の組み込みロールに関するページを参照してください。

制限事項

注意

すべてのデータベース復元操作に対して、現在のバージョンの Create または Update API 呼び出しを使用します。

これらの制限は、SQL Managed Instance でのポイントインタイム リストアに適用されます。

  • ポイントインタイム リストアを使って SQL Managed Instance のデプロイ全体を復元することはできません。 ポイントインタイム リストアを使用して、SQL Managed Instance でホストされているデータベースのコピーを作成するだけです。

  • ポイントインタイム リストアの制限は、データベースを同じサブスクリプション内の SQL マネージド インスタンスに復元するか、別のサブスクリプションの SQL マネージド インスタンスに復元するかによって異なります。

  • Azure SQL Managed Instance で サービス エンドポイント ポリシー が有効になっている場合、サブネットにサービス エンドポイント ポリシーを配置すると、異なるサブネット内のインスタンスからのポイントインタイム リストアが防止されます。

警告

SQL マネージド インスタンスのストレージ サイズに注意してください。 復元するデータのサイズによっては、SQL マネージド インスタンスのストレージが不足する可能性があります。 復元されたデータに対して SQL マネージド インスタンスに十分なストレージ領域がない場合は、別の方法を使用します。

同じサブスクリプションに復元する

ある SQL マネージド インスタンスから同じ Azure サブスクリプション内の別の SQL マネージド インスタンスに復元する場合、両方の SQL マネージド インスタンスが同じリージョンに存在する必要があります。 現在、リージョン間の復元はサポートされていません。

別のサブスクリプションに復元する

サブスクリプション間で特定の時点のバックアップを復元するには、次の制限があります。

  • 両方のサブスクリプションが同じリージョンにある必要があります。

  • 両方のサブスクリプションが同じテナントにある必要があります。

  • サブスクリプションの種類は、Enterprise Agreement、Cloud Solution Provider、Microsoft Certified Partner、または従量課金制のいずれかである必要があります。

  • プライマリ インスタンスでのみ復元アクションを使用できます。

  • バックアップはプライマリ リージョンからのみ復元できます。 geo レプリケートされたセカンダリ リージョンからのデータベースの復元は、サブスクリプション間のポイントインタイム リストアではサポートされていません。

  • 復元アクションを実行するユーザーには、 SQL Managed Instance 共同作成者 ロールの割り当てがあるか、次の明示的なアクセス許可が必要です。

    • ソース SQL マネージド インスタンスの Microsoft.Sql/managedInstances/databases/readBackups/action
    • ターゲット SQL マネージド インスタンスの Microsoft.Sql/managedInstances/crossSubscriptionPITR/action
  • 自分のキーを持ち込む (BYOK) 場合は、キーが両方のサブスクリプションに存在する必要があります。

既存のデータベースを復元する

Azure portal、PowerShell、または Azure CLI を使うことで、既存のデータベースを同じサブスクリプションに復元できます。 PowerShell または Azure CLI を使って同じサブスクリプション内の別のインスタンスに復元する場合は、必ずターゲットの SQL Managed Instance リソースのプロパティを指定します。 既定では、データベースは同じインスタンスに復元されます。

別のサブスクリプションに復元する場合、復元アクションの基になる Create または Update v5.0.2022 以降 の API 呼び出しには、次の値が含まれている必要があります。

  • restorePointInTime
  • crossSubscriptionTargetManagedInstanceId
  • また、 crossSubscriptionSourceDatabaseId または crossSubscriptionRestorableDroppedDatabaseId

既存のデータベースを復元するには、Azure portal でデータベース ページに移動して、[復元] を選びます。

または、データベースを復元するには、次の手順のようにします。

  1. Azure portal にサインインします。

  2. データベースの復元先のターゲット SQL Managed Instance に移動します。

  3. [概要] ページで、[+ 新しいデータベース] を選んで、[Azure SQL マネージド データベースを作成する] ページを開きます。

    新しいデータベースの追加が選ばれている、Azure portal の SQL Managed Instance の [概要] ペインを示すスクリーンショット。

  4. [Azure SQL Managed Database の作成] ページの [基本] タブで、[プロジェクトの詳細] でサブスクリプションとリソース グループの詳細を指定します。 次に、[データベースの詳細] で、復元するデータベースの新しい名前を指定します。 適切な SQL マネージド インスタンスがドロップダウンリストに表示されていることを確認します。 次に、[次へ: データ ソース >] を選びます

    [Azure SQL マネージド データベースを作成する] ページの [基本] タブを示す Azure portal のスクリーンショット。

  5. [データ ソース] タブで、[既存のデータを使用する][特定の時点に復元] を選びます。 ソース データベースを含むサブスクリプション、リソース グループ、および SQL マネージド インスタンスを指定します。 [マネージド データベース] ドロップダウンから、復元するデータベースを選択し、データベースを復元する時点を選択します。 ソースとターゲットのインスタンスは、同じでも、2 つの異なるインスタンスでもかまいません。 [次へ: 追加の設定 >] を選びます

    [Azure SQL マネージド データベースを作成する] ページの [データ ソース] タブを示す Azure portal のスクリーンショット。[特定の時点に復旧] が選ばれています。

  6. [追加の設定] タブでは、ボックスをオンにしてソース データベースからアイテム保持ポリシーを継承するか、[データ保持の構成] を選んで [ポリシーの構成] ページを開き、復元されたデータベースの保持ポリシーを設定することができます。 終わったら、 [確認と作成] を選択します。

    [Azure SQL マネージド データベースを作成する] ページの [追加の設定] タブを示す Azure portal のスクリーンショット。

  7. [確認および作成] で検証が成功したら、[作成] を選んでデータベースを復元します。

このアクションにより、復元プロセスが開始されます。このプロセスでは、新しいデータベースが作成され、指定した時点における元のデータベースのデータが入力されます。 復旧プロセスの詳細については、「復旧時間」を参照してください。

削除されたデータベースを復元する

削除されたデータベースは、Azure portal、Azure PowerShell、または Azure CLI を使用して復元できます。

Azure portal を使用して削除された SQL マネージド データベースを復元するには:

  1. Azure portal で、ソース SQL マネージド インスタンスに移動します。

  2. 左側のメニューの [データ管理][バックアップ] を選びます。

  3. [データベースの表示][削除済み] を選びます。

  4. 復元するデータベースの [復元] を選びます。

    ポータルで使用できるデータベースを示すスクリーンショット。削除されたデータベースを復元する [復元] ボタンが強調表示されています。

  5. [Azure SQL Managed Database の作成] で、データベースを復元するターゲット SQL マネージド インスタンスの詳細を入力または選択します。 [データ ソース] タブを選びます。

  6. [データ ソース] に、ソース データベースの詳細を入力または選択します。 [追加設定] タブを選択します。

  7. [追加の設定] で、データ保有設定を構成します。 [確認および作成] タブを選択します。

  8. [確認および作成][作成] を選び、削除されたデータベースを復元します。

既存のデータベースを上書きする

既存のデータベースを上書きするには、次のアクションを実行する必要があります。

  1. 上書きする元のデータベースをドロップします。
  2. ポイントインタイムから復元されたデータベースの名前を、ドロップしたデータベースの名前に変更します。

元のデータベースを削除する

Azure portal、PowerShell、または Azure CLI を使って、データベースを削除できます。

データベースを削除するもう 1 つのオプションは、SQL Server Management Studio (SSMS) で SQL マネージド インスタンスに直接接続し、 DROP Transact-SQL (T-SQL) コマンドを使用することです。

DROP DATABASE WorldWideImporters;

SQL マネージド インスタンス内のデータベースに接続するには、次のいずれかの方法を使用します。

  1. Azure portal で、SQL マネージド インスタンス内のデータベースを選択します。

  2. コマンド バーの [削除] を選びます。

    Azure portal を使ってデータベースを削除する方法を示すスクリーンショット。

元のデータベース名と一致するように新しいデータベース名を変更する

SQL Server Management Studio (SSMS) を使用して、SQL マネージド インスタンスに直接接続します。 次に、以下の T-SQL クエリを実行します。 このクエリを実行すると、復元されたデータベースの名前を、上書きする予定のドロップされたデータベースの名前に変更することができます。

ALTER DATABASE WorldWideImportersPITR MODIFY NAME = WorldWideImporters;

SQL マネージド インスタンス内のデータベースに接続するには、次のいずれかの方法を使用します。

次のステップ