チュートリアル: Azure Data Studio で SQL Server を Azure SQL Database (プレビュー) にオフライン移行する

Azure Database Migration Service と Azure Data Studio の Azure SQL Migration 拡張機能を使用すると、SQL Server のオンプレミス インスタンスから、最小限のダウンタイムで Azure SQL Database (プレビュー) にデータベースをオフライン移行できます。

このチュートリアルでは、Azure Data Studio の Azure SQL Migration 拡張機能を使用して、SQL Server のオンプレミス インスタンスから Azure SQL Database のインスタンスにサンプル AdventureWorks2019 データベースを移行する方法について説明します。 移行プロセス中に許容できるダウンタイムを考慮して、このチュートリアルではオフライン移行モードを使用します。

このチュートリアルでは、以下の内容を学習します。

  • Azure Data Studio で Azure SQL への移行ウィザードを起動する
  • ソース SQL Server データベースの評価を実行する
  • ソース SQL Server インスタンスからパフォーマンス データを収集する
  • ワークロードに最適な Azure SQL Database SKU のレコメンデーションを取得する
  • オンプレミスのデータベース スキーマを Azure SQL Database にデプロイする
  • Azure Database Migration Service のインスタンスを作成する
  • 移行を開始して完了までの進行状況を監視する

ヒント

Azure Database Migration Service では、データベースをオフラインまたはオンラインで移行できます。 "オフライン" 移行では、移行の開始時がアプリケーションのダウンタイムの起点になります。 移行の完了時点から新しい環境に切り替わるまでの時間にダウンタイムを制限するには、"オンライン" 移行を使用してください。 オフライン移行をテストして、ダウンタイムが許容範囲内であるかどうかを判断することをお勧めします。 予想されるダウンタイムが許容できない場合は、オンライン移行を行います。

重要

Azure SQL Database をターゲットとする "オンライン" 移行は現在使用できません。

前提条件

チュートリアルを開始する前に:

  • Azure Data Studio をダウンロードしてインストールします。

  • Azure Data Studio マーケットプレースから Azure SQL Migration 拡張機能をインストールします。

  • 次に示す組み込みロールのいずれかに割り当てられている Azure アカウントを用意します。

    • ターゲット インスタンスである Azure SQL Database の共同作成者
    • ターゲット インスタンス (Azure SQL Database) を含む Azure リソース グループの閲覧者ロール
    • Azure サブスクリプションの所有者ロールまたは共同作成者ロール (Azure Database Migration Service の新しいインスタンスを作成する場合に必要)

    いずれかの組み込みロールを使用する代わりに、カスタム ロールを割り当てることもできます。

    重要

    Azure アカウントが必要になるのは、移行手順を構成するときのみです。 Azure Data Studio の移行ウィザードで Azure レコメンデーションを確認したり評価を行ったりする際に、Azure アカウントは必要ありません。

  • ターゲット インスタンスである Azure SQL Database を作成します。

  • ソース SQL Server インスタンスに接続する SQL Server ログインが db_datareader ロールのメンバーであること、また、ターゲット SQL Server インスタンスのログインが db_owner ロールのメンバーであることを確認します。

  • SQL Server dacpac 拡張機能または Azure Data Studio の SQL Database Projects 拡張機能を使用して、ソースからターゲットにデータベース スキーマを移行します。

  • Azure Database Migration Service を初めて使用する場合は、Microsoft.DataMigration リソース プロバイダーがサブスクリプションに登録されていることを確認します。

Azure Data Studio で Azure SQL への移行ウィザードを起動する

Azure SQL への移行ウィザードを起動するには:

  1. Azure Data Studio で [接続] に移動します。 SQL Server のオンプレミス インスタンスを選択して、そこに接続します。 Azure 仮想マシン上の SQL Server に接続することもできます。

  2. サーバー接続を右クリックして [管理] を選択します。

    Azure Data Studio におけるサーバー接続と [管理] オプションを示すスクリーンショット。

  3. サーバー メニューの [全般] で、[Azure SQL Migration] を選択します。

    Azure Data Studio のサーバー メニューを示すスクリーンショット。

  4. [Azure SQL の移行] ダッシュボードで、[Azure SQL への移行] を選択して移行ウィザードを起動します。

    Azure SQL への移行ウィザードを示すスクリーンショット。

  5. ウィザードの最初のページで、新しいセッションを開始するか、以前に保存したセッションを再開します。

データベースの評価を実行して、パフォーマンス データを収集し、Azure のレコメンデーションを取得する

  1. Azure SQL への移行ウィザードの [Step 1: Databases for assessment] (ステップ 1: 評価対象のデータベース) で、評価するデータベースを選択します。 次に、 [次へ] を選択します。

    評価対象のデータベースを選択する画面のスクリーンショット。

  2. [Step 2: Assessment results and recommendations] (ステップ 2: 評価の結果とレコメンデーション) で、次の手順を実行します。

    1. [Choose your Azure SQL target] (Azure SQL ターゲットを選択してください) で、Azure SQL Database (プレビュー) を選択します。

      Azure SQL Database ターゲットを選択する画面のスクリーンショット。

    2. [View/Select] (表示/選択) を選択して、評価結果を表示します。

      評価結果を表示/選択する画面のスクリーンショット。

    3. 評価結果からデータベースを選択し、評価レポートを確認して、問題が見つからなかったことを確認します。

      評価レポートを示すスクリーンショット。

    4. [Azure のレコメンデーションを取得する] を選択して、レコメンデーション ペインを開きます。

      Azure のレコメンデーションを示すスクリーンショット。

    5. [Collect performance data now] (今すぐパフォーマンス データを収集する) を選択します。 パフォーマンス ログの格納先となるローカル コンピューター上のフォルダーを選択し、[Start] (開始) を選択します。

      パフォーマンス データの収集を示すスクリーンショット。

      データ収集を停止するか、Azure Data Studio を閉じるまで、パフォーマンス データは収集されます。

      10 分後、Azure SQL Database のレコメンデーションが利用可能になった旨が Azure Data Studio から伝えられます。 最初のレコメンデーションが生成された後、[データ収集を再開する] を選択してデータ収集プロセスを継続することで、SKU レコメンデーションを調整できます。 評価時間の延長は特に、使用パターンが経時的に変化する状況で効果的です。

      パフォーマンス データが収集されたことを示すスクリーンショット。

    6. 選択した Azure SQL Database (プレビュー) ターゲットの [View details] (詳細の表示) を選択して、詳細な SKU レコメンデーション レポートを開きます。

      ターゲット データベースのレコメンデーションに対する [View details] (詳細の表示) リンクを示すスクリーンショット。

    7. [Review Azure SQL Database Recommendations] (Azure SQL Database のレコメンデーションを確認します) で、レコメンデーションを確認します。 レコメンデーションのコピーを保存するには、[推奨事項レポートを保存する] を選択します。

      SKU のレコメンデーションの詳細を示すスクリーンショット。

  3. [閉じる] を選択してレコメンデーション ペインを閉じます。

  4. [次へ] を選択して、引き続きウィザードでデータベースの移行を行います。

移行の設定の構成

  1. Azure SQL への移行ウィザードの [Step 3: Azure SQL target] (ステップ 3: Azure SQL ターゲット) で、ターゲット Azure SQL Database インスタンスに関する手順を実行します。

    1. Azure アカウント、Azure サブスクリプション、Azure リージョン (場所)、Azure SQL Database デプロイを含むリソース グループを選択します。

      Azure アカウントの詳細を示すスクリーンショット。

    2. Azure SQL Database サーバーについて、ターゲット Azure SQL Database サーバー (論理サーバー) を選択します。 ターゲット データベース デプロイのユーザー名とパスワードを入力します。 次に、 [接続] を選択します。 資格情報を入力して、ターゲット データベースへの接続を確認します。

      Azure SQL Database の詳細を示すスクリーンショット。

    3. 次に、移行のターゲット データベースとソース データベースをマッピングします。 [ターゲット データベース] で、Azure SQL Database ターゲットを選択します。 次に、[次へ] を選択して、移行ウィザードの次の手順に進みます。

      ソースとターゲットのマッピングを示すスクリーンショット。

  2. [Step 4: Migration mode] (ステップ 4: 移行モード) で、[オフライン移行] を選択し、[次へ] を選択します。

    オフライン移行を選択する画面のスクリーンショット。

  3. [Step 5: Data source configuration] (ステップ 5: データ ソースの構成) で、次の手順を実行します。

    1. [Source credentials] (ソースの資格情報) に、ソース SQL Server の資格情報を入力します。

    2. [テーブルの選択] で、[編集] の鉛筆アイコンを選択します。

      ソース SQL Server の資格情報を示すスクリーンショット。

    3. [Select tables for <database-name>] (<データベース名> のテーブルの選択) で、ターゲットに移行するテーブルを選択します。 [行を含む] 列に、ターゲット テーブルにターゲット データベース内の行があるかどうかが示されます。 1 つまたは複数のテーブルを選択できます。 次に、[更新] を選択します。

      選択したテーブルのリストは、移行を開始する前であればいつでも更新できます。

      次の例では、テキスト フィルターを適用して、「Employee」という単語を含むテーブルのみを選択しています。 移行のニーズに基づいてテーブルのリストを選択してください。

      テーブルの選択画面のスクリーンショット。

  4. テーブルの選択内容を確認し、[次へ] を選択して、移行ウィザードの次の手順に進みます。

    移行対象として選択されたテーブルを示すスクリーンショット。

Note

テーブルが選択されていない場合や、ユーザー名とパスワードが入力されていない場合、[次へ] ボタンは選択できません。

Database Migration Service インスタンスを作成する

Azure SQL への移行ウィザードの [Step 6: Azure Database Migration Service] (ステップ 6: Azure Database Migration Service) で、Azure Database Migration Service の新しいインスタンスを作成するか、または以前に作成した既存のインスタンスを再利用します。

注意

過去に Azure portal を使用して作成した Database Migration Service インスタンスは、Azure Data Studio の移行ウィザードで再利用できません。 インスタンスを再利用できるのは、Azure Data Studio を使用してインスタンスを作成した場合だけです。

Database Migration Service の既存のインスタンスを使用する

Database Migration Service の既存のインスタンスを使用するには:

  1. [リソース グループ] で、Database Migration Service の既存のインスタンスを含んだリソース グループを選択します。

  2. [Azure Database Migration Service] で、選択したリソース グループにある Database Migration Service の既存のインスタンスを選択します。

  3. [次へ] を選択します。

    Database Migration Service の選択画面のスクリーンショット。

Database Migration Service の新しいインスタンスを作成する

Database Migration Service の新しいインスタンスを作成するには:

  1. Database Migration Service の新しいインスタンスを置く新しいリソース グループを [リソース グループ] で選択します。

  2. [Azure Database Migration Service][新規作成] を選択します。

  3. [Azure Database Migration Service の作成] で、Database Migration Service インスタンスの名前を入力し、[作成] を選択します。

  4. [Set up integration runtime] (統合ランタイムのセットアップ) で、次の手順を実行します。

    1. [統合ランタイムのダウンロードとインストール] リンクを選択して、Web ブラウザーでダウンロード リンクを開きます。 統合ランタイムをダウンロードし、ソース SQL Server インスタンスに接続するための前提条件を満たしたコンピューターにそれをインストールします。

      [統合ランタイムのダウンロードとインストール] リンクを示すスクリーンショット。

      インストールが完了すると、Microsoft Integration Runtime Configuration Manager が自動的に起動して登録プロセスが開始されます。

    2. [認証キー] テーブルで、ウィザードから提供されたいずれかの認証キーをコピーし、それを Azure Data Studio に貼り付けます。

      ウィザードの認証キー テーブルが強調表示されているスクリーンショット。

      認証キーが有効であれば、Integration Runtime Configuration Manager に緑色のチェック マーク アイコンが表示されます。 緑色のチェック マークは、引き続き登録に進むことができることを示します。

      セルフホステッド統合ランタイムの登録後、Microsoft Integration Runtime 構成マネージャーを閉じます。

      Note

      セルフホステッド統合ランタイムを使用する方法について詳しくは、「セルフホステッド統合ランタイムを作成して構成する」を参照してください。

  5. Azure Data Studio の [Azure Database Migration Service の作成][テスト接続] を選択し、新しく作成した Database Migration Service インスタンスが、新たに登録されたセルフホステッド統合ランタイムに接続されていることを確認します。

    IR 接続テストを示すスクリーンショット。

  6. Azure Data Studio の移行ウィザードに戻ります。

データベースの移行を開始する

Azure SQL への移行ウィザードの [Step 7: Summary] (ステップ 7: サマリー) で、作成した構成を確認し、[移行の開始] を選択してデータベースの移行を開始します。

移行の開始を示すスクリーンショット。

データベースの移行を監視する

  1. Azure Data Studio のサーバー メニューの [General] (全般) で、[Azure SQL Migration] (Azure SQL の移行) を選択し、Azure SQL Database の移行に使用するダッシュボードに移動します。

    [データベースの移行状態] で、進行中の移行、完了済みの移行、失敗した移行 (該当する場合) を追跡するか、またはすべてのデータベースの移行を確認できます。

    移行ダッシュボードの監視を示すスクリーンショット。

  2. [データベースの移行が進行中] を選択して、アクティブな移行を確認します。

    特定の移行の詳細を取得するには、そのデータベースの名前を選択します。

    データベース移行の詳細を示すスクリーンショット。

    移行状態が更新されるたびに、確認されている最新の移行状態が Database Migration Service から返されます。 次の表は、状態の種類とその説明です。

    Status 説明
    コピーの準備 ターゲット テーブルの自動統計、トリガー、インデックスをサービスが無効にしています。
    コピー ソース データベースからターゲット データベースにデータがコピーされています。
    コピーの完了 データのコピーが完了しました。 サービスは、他のテーブルのコピーが完了するのを待って、テーブルを元のスキーマに戻す最後の手順を開始します。
    インデックスの再構築 サービスはターゲット テーブルのインデックスを再構築しています。
    成功 すべてのデータがコピーされ、インデックスが再構築されました。
  3. 移行の詳細ページをチェックして、各データベースの最新の状態を確認します。

    次に示したのは、AdventureWorks2019 データベースの移行の例です。その状態は [作成中] です。

    移行状態の作成を示すスクリーンショット。

  4. メニュー バーで [更新] を選択して、移行の状態を更新します。

    移行の状態を更新すると、サンプル AdventureWorks2019 データベースの最新の移行状態が [進行中] になります。

    進行中状態の移行を示すスクリーンショット。

  5. データベース名を選択してテーブル ビューを開きます。 このビューには、移行の現在の状態、現在その状態にあるテーブルの数、各テーブルの詳細な状態が表示されます。

    監視中のテーブル移行を示すスクリーンショット。

    すべてのテーブル データが Azure SQL Database ターゲットに移行されると、Database Migration Service によって移行状態が [進行中] から [成功] に更新されます。

    移行が成功したことを示すスクリーンショット。

注意

Database Migration Service は、データのないテーブル (0 行) をスキップすることで、移行を最適化します。 データのないテーブルはリストに表示されません。移行の作成時にテーブルを選択したとしても同様です。

Azure SQL Database への移行が完了しました。 移行後の一連のタスクを実行して、すべてがスムーズかつ効率的に機能していることを確認するのをお勧めします。

重要

Azure SQL Database のクラウドベースの高度な機能をぜひ活用してください。 この機能には、組み込みの高可用性脅威検出ワークロードの監視とチューニングなどが含まれます。

制限事項

Azure SQL Database オフライン移行では、データ移動に Azure Data Factory (ADF) パイプラインが利用されるため、ADF の制限に従います。 データベース移行サービスも作成されると、対応する ADF が作成されます。 したがって、ファクトリの制限はサービスごとに適用されます。

  • SHIR がインストールされているマシンは、移行用のコンピューティングとして機能します。 このマシンがデータ コピーの CPU とメモリの負荷を処理できることを確認します。 詳細については、SHIR の推奨事項に関するページを参照してください。
  • データベースあたり 100,000 テーブルの制限。
  • サービスごとに 10,000 個の同時データベース移行。
  • 移行速度は、ターゲット Azure SQL Database SKU とセルフホステッド統合ランタイム ホストによって大きく異なります。
  • Azure SQL データベースの移行では、アクティビティの開始時に ADF のオーバーヘッドが発生するため、テーブル番号のスケーリングが不十分です。 データベースに何千ものテーブルがある場合、1 行 1 ビットのデータで構成されている場合でも、それぞれに数秒の起動時間が発生します。
  • 現在、2 バイト文字の Azure SQL データベース テーブル名は移行でサポートされていません。 軽減策は、移行前にテーブルの名前を変更することです。移行が成功した後は、元の名前に戻すことができます。
  • BLOB 列が大きいテーブルは、タイムアウトにより移行に失敗する場合があります。
  • SQL Server で予約されたデータベース名は現在サポートされていません。
  • セミコロンを含むデータベース名は現在サポートされていません。
  • 計算列は移行されません。

次のステップ