すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:Windows インスタンスにデプロイされた SQL Server のアプリケーション整合性スナップショットを作成するためのベストプラクティス

最終更新日:Jul 07, 2025

アプリケーション整合性スナップショットを作成すると、スナップショットによってキャプチャされるデータの整合性と一貫性を確保するために、アプリケーションに書き込まれるデータが一時停止されます。 アプリケーション整合性スナップショットを使用してデータを復元すると、データの破損や損失のリスクを軽減できます。 これにより、SQL Server などのアプリケーションが期待どおりに起動し、データはスナップショットが作成された時の状態のままになります。 このトピックでは、アプリケーション整合性スナップショットを期待どおりに使用して、Elastic Compute Service (ECS) Windows インスタンスのデータを復元できるかどうかを確認する方法について説明します。 次の例では、Windows Server 2019 と Microsoft SQL Server 2019 (64 ビット) を使用しています。

前提条件

  • ECS インスタンスに接続されているディスクは、マルチアタッチが無効になっている企業向け SSD (ESSD) です。

  • ECS インスタンスは [実行中] 状態です。 インスタンス上の Cloud Assistant は通常の状態です。 Cloud Assistant の状態を表示する方法については、「Cloud Assistant の状態を表示し、異常を処理する」をご参照ください。

  • Microsoft SQL Server が ECS インスタンスにインストールされています。

  • Resource Access Management (RAM) ロールが ECS インスタンスに接続され、アプリケーション整合性スナップショットの権限を含むカスタムポリシーが RAM ロールに接続されています。 詳細については、「インスタンス RAM ロールを作成し、ECS インスタンスに接続する」をご参照ください。

    説明

    アプリケーション整合性スナップショットを作成する場合、Cloud Assistant を呼び出して ECS インスタンスにアクセスし、コマンドを実行する必要があります。 Cloud Assistant を呼び出す前に、RAM ロールを使用して Cloud Assistant に必要な権限を付与します。

    • AppSnapshotRoleName などのカスタム RAM ロールを設定します。

    • カスタムポリシーを RAM ロールに接続します。 次のサンプルコードはカスタムポリシーを示しており、RAM ロールにはスナップショットのクエリ、スナップショットの作成、タグの追加、ディスク情報のクエリを行う権限があることを示しています。

      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "ecs:DescribeSnapshot*",
                      "ecs:CreateSnapshot*",
                      "ecs:TagResources",
                      "ecs:DescribeDisks"
                  ],
                  "Resource": [
                      "*"
                  ],
                  "Condition": {}
              }
          ]
      }

ワークフロー

このプラクティスでは、データベースがスナップショット作成時の状態のままであることを保証するためにアプリケーション整合性スナップショットを作成する方法を検証し、アプリケーションの整合性を確保します。 次の図はワークフローを示しています。

image
  1. ステップ 1: データベース検証環境を準備する

    データベーステーブルを作成し、ストアドプロシージャをトリガーしてデータ書き込み操作をシミュレートし、後でアプリケーション整合性スナップショットを検証します。

  2. ステップ 2: ECS コンソールでアプリケーション整合性スナップショットを作成する

    ECS コンソールで、SQL Server データベースが存在する Windows インスタンスのアプリケーション整合性スナップショットを作成します。 アプリケーション整合性スナップショットを作成すると、データの整合性を確保するためにデータベースへの書き込み操作が一時的に停止されます。

  3. ステップ 3: アプリケーション整合性スナップショットが作成されたかどうかを確認する

    Cloud Assistant コマンドの実行結果を表示して、アプリケーション整合性スナップショットが作成されたかどうかを確認し、データベースで書き込み操作が一時停止および再開された時点を表示します。

  4. ステップ 4: アプリケーション整合性スナップショットを使用してデータを期待どおりに復元できるかどうかを確認する

    アプリケーション整合性スナップショットを使用してデータを復元します。 データが期待どおりに復元されたかどうかを確認するには、SQL Server データベースにデータが最後に書き込まれた時刻と、データベースで書き込み操作が一時停止された時刻を比較します。

    • SQL Server データの最終書き込み時刻がデータベースの一時停止時刻より前の場合、一時停止期間中にデータベースへの書き込み操作は実行されません。 データ復元後の SQL Server データの最終書き込み時刻は、書き込み操作が一時停止される前の最後の状態を反映しています。 データベースは、スナップショットが作成された時の状態のままです。

    • SQL Server データの最終書き込み時刻がデータベースの一時停止時刻以降の場合、一時停止期間中にデータベースへの書き込み操作が引き続き実行され、アプリケーション整合性スナップショットの効果は期待どおりになりません。

手順

ステップ 1: データベース検証環境を準備する

  1. Windows インスタンスに接続します。

    詳細については、「Workbench を使用して RDP 経由で Windows インスタンスに接続する」をご参照ください。

  2. SQL Server に接続します。

    1. 左下隅にある検索アイコンをクリックし、検索ボックスに ssms と入力して、Enter キーを押します。

    2. [Microsoft SQL Server Management Studio 18] をクリックします。

    3. [サーバーに接続] ダイアログボックスで、サーバー接続情報を設定し、[接続] をクリックします。

  3. [Microsoft SQL Server Management Studio 18] で、AdventureWorks という名前のテストデータベースを作成します。

    1. [新しいクエリ] をクリックします。

    2. 表示されるクエリウィンドウに、次の SQL 文を入力します。

      CREATE DATABASE AdventureWorks;
    3. クエリウィンドウを右クリックし、[実行] を選択します。

  4. [Microsoft SQL Server Management Studio 18] で、PointInTime という名前のテストテーブルを作成します。

    1. [新しいクエリ] をクリックします。

    2. 表示されるクエリウィンドウに次の SQL 文を入力します。

      USE AdventureWorks
      GO
      IF NOT EXISTS (SELECT name FROM sysobjects WHERE name = 'PointInTime' AND TYPE ='U')
      CREATE TABLE PointInTime (PIT datetime)
      WHILE ( 1 = 1 )
      BEGIN
          INSERT PointInTime SELECT GETDATE()
          WAITFOR DELAY '00:00:001'
      END
    3. クエリウィンドウを右クリックし、[実行] を選択します。

  5. 左側のディレクトリツリーで、作成されたデータベースとテーブルを表示します。

ステップ 2: ECS コンソールでアプリケーション整合性スナップショットを作成する

  1. ECS コンソール - スナップショット整合性グループ に移動します。

  2. 上部のナビゲーションバーで、管理するリソースのリージョンとリソースグループを選択します。 地域

  3. [スナップショット整合性グループ] タブで、[スナップショット整合性グループの作成] をクリックします。

  4. [スナップショットの作成] ダイアログボックスで、次の表に示すパラメータを設定します。

    1. デフォルトでは、[リソースタイプ]パラメータは [インスタンス] に設定されています。

    2. [インスタンスの選択] ドロップダウンリストから Windows インスタンスを選択します。 次に、[クラウドディスクの選択] セクションで、インスタンスからスナップショットを作成する ESSD を選択します。

    3. [高度な設定] を展開し、[アプリケーション整合性スナップショットの有効化] を選択し、[デフォルトでライターを含める] を選択します。

      説明

      ライターは、ボリュームシャドウコピーサービス (VSS) アーキテクチャの主要コンポーネントです。 Windows オペレーティングシステムは、バックアップ中のデータの整合性を確保するためにライターを提供します。 詳細については、「ボリュームシャドウコピーサービス」をご参照ください。

  5. [OK] をクリックします。

    スナップショット整合性グループが作成されると、Cloud Assistant コマンド ID とタスク ID が含まれるメッセージが表示されます。 タスク ID に基づいて、アプリケーション整合性スナップショットが作成されたかどうかを確認できます。

ステップ 3: アプリケーション整合性スナップショットが作成されたかどうかを確認する

  1. ECS Cloud Assistant ページの [コマンド実行結果] タブにあるタスク ID をクリックして、コマンドの実行結果を表示します。

    image

    アプリケーション整合性スナップショットが作成された場合、[終了コード] の戻り値は 0 です。 コマンド出力は、アプリケーション整合性スナップショットが作成されたことを示し、前の図に示すように、スナップショット整合性グループの ID が含まれています。

    説明

    [終了コード] の戻り値が 0 でない場合は、エラーが発生しています。 [終了コード] 列に返されたエラーコードに基づいて、エラーのトラブルシューティングを行います。 詳細については、「アプリケーション整合性スナップショットの作成」トピックの「エラーコード」セクションをご参照ください。

  2. コマンド出力で、スナップショット整合性グループの作成プロセスに関する情報を表示して、作成されたスナップショットがデータの整合性と可用性の要件を満たしていることを確認します。

    • COM+ や VSS などの必要な整合性コンポーネントがインストールされているかどうかを確認します。

      image

    • バックアップする必要があるすべての論理ボリュームがシステムによって正しく識別され、ロードされていることを確認します。

      image

    • SQL Server 内の対応するデータベースが自動的に追加され、データベースの整合性と一貫性が確保されていることを確認します。

      image

    • 次のコマンド出力は、2025-03-03 13:53:30 にスナップショットが作成されたことを示しています。 スナップショットデータはこの時点でキャプチャされ、データベースの書き込み操作は一時停止されました。

      image

  3. 作成されたスナップショット整合性グループとディスクスナップショットを表示します。

    1. ECS コンソール - スナップショット整合性グループ に移動します。

    2. [スナップショット整合性グループ] タブで、作成したスナップショット整合性グループを見つけ、スナップショット整合性グループの ID をクリックして、スナップショットの詳細を表示します。

    3. [スナップショット情報] セクションで、タグに基づいてアプリケーション整合性スナップショットが作成されたかどうかを確認します。

      アプリケーション整合性スナップショットが作成されると、次の図に示すように、スナップショットに対応する [タグ] 列に APPConsistent:True タグが表示されます。

      image

  4. SQL Server データベースに接続し、書き込み操作が一時停止された時点を表示します。

    1. Windows インスタンスに接続します。

      詳細については、「Workbench を使用して RDP 経由で Windows インスタンスに接続する」をご参照ください。

    2. [Microsoft SQL Server Management Studio 18] を使用して SQL Server データベースに接続します。

    3. [新しいクエリ] をクリックします。

    4. 表示されるクエリウィンドウに次の SQL 文を入力します。

      USE AdventureWorks
      select * from PointInTime
      GO
    5. クエリウィンドウを右クリックし、[実行] を選択します。

    6. クエリ結果で、データベースへの書き込み操作が一時停止された期間を表示します。

      クエリ結果によると、2025-03-03 13:53:30 から 2025-03-03 13:53:33 までの期間にデータが追加されていないことがわかります。これは、データベースへの書き込み操作が 13:53:30 に一時停止され、13:53:33 に再開されたことを示しています。

      image

ステップ 4: アプリケーション整合性スナップショットを使用してデータを期待どおりに復元できるかどうかを確認する

  1. スナップショット整合性グループを使用してディスクをロールバックする

  2. SQL Server にログオンし、PointInTime テーブルの内容をクエリします。

    1. Windows インスタンスに接続します。

      詳細については、「Workbench を使用して RDP 経由で Windows インスタンスに接続する」をご参照ください。

    2. [Microsoft SQL Server Management Studio 18] を使用して SQL Server データベースに接続します。

    3. [新しいクエリ] をクリックします。

    4. 表示されるクエリウィンドウに次の SQL 文を入力します。

      USE AdventureWorks
      select * from PointInTime
      GO
    5. クエリウィンドウを右クリックし、[実行] を選択します。

    6. クエリ結果で、データが復元された後、SQL Server データベースにデータが最後に書き込まれた時点を見つけます。

      クエリ結果は、最後のデータ レコードがデータベースに追加された時点が 2025-03-03 13:53:29 であることを示しています。これは、手順 3 でクエリされた停止の時点 2025-03-03 13:53:30ステップ 3 よりも前です。これは、アプリケーション整合性スナップショットが想定どおりに SQL Server のデータをバックアップできることを確認しています。

      image