移行ガイド:SQL Server から Azure Virtual Machines 上の SQL Server

適用対象:Azure VM 上の SQL Server

このガイドでは、ユーザーの要件に基づくツールと手法を使用して、ユーザー データベースの "検出" と "評価" を行い、SQL Server から Azure Virtual Machines 上の SQL Server のインスタンスに "移行" する方法について説明します。

オンプレミスまたは次で実行されている SQL Server を移行できます。

  • SQL Server on Virtual Machines (VMs)。
  • アマゾン ウェブ サービス (AWS) EC2。
  • Amazon Relational Database Service (AWS RDS)。
  • Compute Engine (Google Cloud Platform (GCP))。

その他の移行戦略の詳細については、SQL Server VM 移行の概要に関するページを参照してください。 その他の移行ガイドについては、「Azure データベースの移行ガイド」を参照してください。

Diagram that shows a migration process flow.

前提条件

Azure Virtual Machines 上の SQL Server への移行には、次のリソースが必要です。

移行前

移行を開始する前に、自分の SQL 環境のトポロジを検出し、目的とする移行の実現可能性を評価する必要があります。

発見

Azure Migrate では、オンプレミス コンピューターの移行適合性を評価し、パフォーマンスに基づくサイズ設定を行い、オンプレミスでの実行にかかるコストを見積もります。 移行の計画を立てるために、Azure Migrate を使って、自分の SQL Server インスタンスで使用される既存のデータ ソースと機能の詳細を特定します。 このプロセスには、ネットワークをスキャンし、組織内のすべての SQL Server インスタンス、さらにバージョンと使用中の機能を特定することが含まれます。

重要

SQL Server インスタンスのターゲット Azure 仮想マシンを選択する際は、Azure Virtual Machines 上の SQL Server のパフォーマンス ガイドラインを考慮するようにしてください。

その他の検出ツールについては、「データ移行のシナリオで利用できるサービスとツール」を参照してください。

アクセス

オンプレミスの SQL Server から Azure Virtual Machines 上の SQL Server に移行するとき、ソースとターゲットの SQL Server のバージョンが同じであれば、互換性や機能パリティの問題が発生する可能性はほとんどありません。 SQL Server のバージョンをアップグレード "しない" 場合は、この手順をスキップして「移行」セクションに進みます。

移行の前に、SQL Server データベースの評価を行って移行の阻害要因 (ある場合) を明らかにするのはよいことであり、Azure Data Studio 用の Azure SQL 移行拡張機能によって移行前にそれが行われます。

Note

VMware 上の SQL Server データ資産全体を大規模に評価している場合は、Azure Migrate を使用して、Azure SQL デプロイに関する推奨事項、ターゲットのサイズ設定、月単位の見積もりを取得します。

ユーザー データベースへのアクセス

Azure Data Studio 用の Azure SQL Azure SQL Migration 拡張機能は、評価を実行し、Azure レコメンデーションを取得して、オンプレミスの SQL Server データベースを Azure Virtual Machines 上の SQL Server に移行する、ウィザード ベースのシームレスなエクスペリエンスを提供します。 移行の阻害要因や警告を明らかにする以外にも、拡張機能には、ワークロードのパフォーマンス ニーズを満たす適切なサイズ (最小価格) の Azure Virtual Machines 上の SQL Server を推奨するために、データベースのパフォーマンス データを収集する、Azure レコメンデーションのオプションも含まれています。

Azure レコメンデーションの詳細については、「オンプレミスの SQL Server データベースに適したサイズの Azure レコメンデーションを取得する」を参照してください。

重要

Azure SQL 移行拡張機能を使用してデータベースを評価するには、ソース SQL Server への接続に使用するログインが、sysadmin サーバー ロールのメンバーであるか、CONTROL SERVER アクセス許可を持っていることを確認してください。

バージョンのアップグレードで、アップグレード先である Azure Virtual Machines 上の SQL Server のインスタンスのバージョンが高い場合は、Data Migration Assistant を使用してオンプレミスの SQL Server インスタンスを評価し、ソース バージョンとターゲット バージョンの間のギャップを確認します。

アプリケーションを評価する

通常、データの保持と変更のためにユーザー データベースにアクセスするのはアプリケーション レイヤーです。 Data Migration Assistant は、アプリケーションのデータ アクセス レイヤーに 2 つの方法でアクセスします。

  • ユーザー データベースの拡張イベントまたは SQL Server Profiler トレースをキャプチャして使用する。 また、Database Experimentation Assistant を使用して、A/B テストにも使用できるトレース ログを作成することができます。
  • Data Access Migration Toolkit (プレビュー) を使用する。これは、コード内の SQL クエリの検出と評価に役立ちます。また、一方から他方のデータベース プラットフォームにアプリケーション ソース コードを移行するために使用されます。 このツールは、C#、Java、XML、プレーン テキストなどの一般的なファイルの種類をサポートしています。 Data Access Migration Toolkit の評価を実行する方法については、Use Data Migration Assistant のブログ投稿を参照してください。

ユーザー データベースの評価中に、Data Migration Assistant を使用して、キャプチャされたトレース ファイルまたは Data Access Migration Toolkit ファイルをインポートします。

大規模な評価

Azure 対応性の評価を必要とする複数のサーバーがある場合は、次のいずれかのオプションを使用して、スクリプトを使ってプロセスを自動化できます。 スクリプトの使用法の詳細については、「自動化を使用してデータベースを大規模に移行する」を参照してください。

大規模な資産全体の概要レポートの場合は、Data Migration Assistant の評価を Azure Migrate に統合することもできます。

Data Migration Assistant を使用してデータベースをアップグレードする

アップグレードのシナリオでは、アップグレード後にユーザー データベースが正常に動作して機能するようにするための一連のレコメンデーションがあります。 Data Migration Assistant から、影響を受けるオブジェクトの詳細と、それぞれの問題を解決する方法のリソースが示されます。 運用環境のアップグレードを始める前に、すべての破壊的変更と動作の変更を解決しておくことをお勧めします。

これらの変更を回避して移行を高速化したい場合には、非推奨の機能について、本来の互換性モードでユーザー データベースを実行することを選択できます。 この操作により、非推奨の項目が解決されるまでデータベース互換性をアップグレードできなくなります。

注意

すべての SQL Server バージョンで互換性モードがサポートされているわけではありません。 ご自分のターゲット SQL Server バージョンで、選択したデータベース互換性がサポートされていることをご確認ください。 たとえば、SQL Server 2019 では、互換性レベルが 90 (SQL Server 2005) のデータベースはサポートされていません。 これらのデータベースでは、少なくとも互換性レベル 100 へのアップグレードが必要です。

移行

移行前の手順を完了したら、ユーザー データベースとコンポーネントを移行する準備が整います。 お望みの移行方法を使用して、データベースを移行します。

次のセクションでは、優先順に移行を実行するためのオプションを示します。

Azure Data Studio 用の Azure SQL Migration 拡張機能を使用して移行する (最小限のダウンタイム)

Azure Data Studio を使用して最小限のダウンタイムでの移行を実行するには、次の大まかな手順に従います。 詳細なステップバイステップのチュートリアルについては、「Azure Data Studio を使用して SQL Server をオンラインで Azure Virtual Machine 上の SQL Server に移行する」を参照してください。

  1. Azure Data StudioAzure SQL Migration 拡張機能をダウンロードしてインストールします。
  2. Azure Data Studio の拡張機能で Azure SQL への移行ウィザードを起動します。
  3. 評価用のデータベースを選択し、移行の準備状況または問題 (存在する場合) を表示します。 さらに、パフォーマンス データを収集し、適切なサイズの Azure レコメンデーションを取得します。
  4. サブスクリプションから Azure アカウントと Azure マシン上のターゲット SQL Server を選択します。
  5. データベース バックアップの場所を選択します。 データベース バックアップは、オンプレミスのネットワーク共有または Azure Blob Storage コンテナーに置くことができます。
  6. Azure Data Studio のウィザードを使用して、新しい Azure Database Migration Service を作成します。 Azure Data Studio を使用して以前に Azure Database Migration Service を作成したことがある場合は、必要に応じてそれを再利用できます。
  7. "省略可能": バックアップがオンプレミスのネットワーク共有上にある場合は、ソース SQL Server に接続できるマシンと、バックアップ ファイルを含む場所にセルフホステッド統合ランタイムをダウンロードしてインストールします。
  8. データベースの移行を開始し、Azure Data Studio での進行状況を監視します。 Azure portal の Azure Database Migration Service リソースで進行状況を監視することもできます。
  9. 一括移行を完了します。
    1. ソース データベースに送信されるすべてのトランザクションを停止します。
    2. アプリケーション構成を変更し、Azure Virtual Machine 上の SQL Server のターゲット データベースをポイントするようにします。
    3. 指定されたバックアップ場所で、ソース データベースのログ末尾のバックアップを行います。
    4. 監視の詳細パッケージで、すべてのデータベース バックアップの状態が [復元された] になっていることを確認します。
    5. 監視の詳細ページで [一括を完了する] を選択します。

バックアップと復元

バックアップと復元を使用した標準の移行を実行するには:

  1. 要件に基づいて、Azure Virtual Machines 上の SQL Server への接続を設定します。 詳細については、Azure 上にある SQL Server 仮想マシンへの接続 (リソース マネージャー) に関する記事を参照してください。
  2. 移行の対象となるデータベースを使用しているアプリケーションを一時停止または停止します。
  3. シングル ユーザー モードを使用して、ユーザー データベースが非アクティブであることを確認します。
  4. オンプレミスの場所へのデータベースの完全バックアップを実行します。
  5. リモート デスクトップ、Azure Data Explorer、または AzCopy コマンド ライン ユーティリティを使用して、オンプレミスのバックアップ ファイルを自分の VM にコピーします。 (2 TB を超えるバックアップをお勧めします)。
  6. データベースの完全バックアップを Azure Virtual Machines 上の SQL Server に復元します。

URL からデタッチとアタッチを行う

データベースとログ ファイルをデタッチし、Azure Blob Storage に転送します。 その後、Azure VM で URL からデータベースをアタッチします。 物理データベース ファイルを BLOB ストレージに格納したい場合は、この方法を使用します。これは、非常に大規模なデータベースで役に立つことがあります。 この手動による方法を使用してユーザー データベースを移行するには、次の一般的な手順を実行します。

  1. オンプレミスのデータベース インスタンスからデータベース ファイルをデタッチします。
  2. デタッチされたデータベース ファイルを、AZCopy コマンド ライン ユーティリティを使用して Azure Blob Storage にコピーします。
  3. データベース ファイルを、Azure URL から Azure VM の SQL Server のインスタンスにアタッチします。

VM に変換して URL にアップロードし、新しい VM としてデプロイする

オンプレミスの SQL Server インスタンスのすべてのシステムとユーザー データベースを Azure 仮想マシンに移行するときはこの方法を使用します。 この手動による方法を使用して SQL Server インスタンス全体を移行するには、次の一般的な手順を実行します。

  1. 物理マシンまたは仮想マシンを Hyper-V VHD に変換します。
  2. Add-AzureVHD コマンドレットを使用して、VHD ファイルを Azure Storage にアップロードします。
  3. アップロードした VHD を使用して、新しい仮想マシンをデプロイします。

Note

アプリケーション全体を移行するには、Azure Site Recoveryを使用することを検討します。

ログ配布

ログ配布では、オンプレミスから Azure VM 上の SQL Server のインスタンスにトランザクション ログ ファイルをレプリケートします。 このオプションによって、フェイルオーバー時のダウンタイムを最小限に抑えられます。また、Always On 可用性グループを設定するよりも構成のオーバーヘッドが少なくなります。

詳細については、「ログ配布テーブルとストアド プロシージャ」を参照してください。

ハード ドライブを発送する

ネットワーク経由のアップロードが実現不可能であるか、非常にコストがかかる場合には、Windows の Import/Export サービス方法を使用して、ファイルの大量のデータを Azure BLOB ストレージに転送します。 このサービスでは、データを含む 1 台以上のハード ドライブを Azure データ センターに発送し、そのデータ センターでデータがストレージ アカウントにアップロードされます。

ユーザー データベース外のオブジェクトを移行する

ユーザー データベースの移行後のシームレスな運用には、追加の SQL Server オブジェクトが必要な場合があります。

次の表では、コンポーネントと (ユーザー データベースの移行の前後に完了できる) 推奨の移行方法の一覧を示します。

機能 コンポーネント 移行の方法
データベース モデル SQL Server Management Studio でスクリプトを使用します。
tempdb データベース 最善のパフォーマンスが得られるように、Azure VM 一時ディスク (SSD) への tempdb の移動を計画します。 自分の tempdb に合わせて、十分なローカル SSD を備えた VM サイズを選択してください。
FileStream を使用したユーザー データベース バックアップと復元の方法を使用して移行します。 Data Migration Assistant では、FileStream を使用したデータベースはサポートされません。
Security SQL Server と Windows のログイン Data Migration Assistant を使用して、ユーザー ログインを移行します。
SQL Server ロール SQL Server Management Studio でスクリプトを使用します。
暗号化プロバイダー Azure Key Vault の使用に切り替えることをお勧めします。 この手順では、SQL VM リソース プロバイダーを使用します。
サーバー オブジェクト バックアップ デバイス Azure Backup を使用してデータベース バックアップを置換します。または、Azure Storage にバックアップを書き込みます (SQL Server 2012 SP1 CU2 +)。 この手順では、SQL VM リソース プロバイダーを使用します。
リンク サーバー SQL Server Management Studio でスクリプトを使用します。
サーバー トリガー SQL Server Management Studio でスクリプトを使用します。
レプリケーション ローカル パブリケーション SQL Server Management Studio でスクリプトを使用します。
ローカル サブスクライバー SQL Server Management Studio でスクリプトを使用します。
PolyBase PolyBase SQL Server Management Studio でスクリプトを使用します。
管理 データベース メール SQL Server Management Studio でスクリプトを使用します。
SQL Server エージェント ジョブ SQL Server Management Studio でスクリプトを使用します。
警告 SQL Server Management Studio でスクリプトを使用します。
オペレーター SQL Server Management Studio でスクリプトを使用します。
プロキシ SQL Server Management Studio でスクリプトを使用します。
オペレーティング システム ファイル、ファイル共有 SQL Server で使用されるその他のファイルまたはファイル共有をメモしておいて、Azure Virtual Machines ターゲットにレプリケートします。

移行後

移行段階が正常に完了したら、移行後の一連のタスクを完了し、すべてが可能な限り円滑かつ効率的に機能していることを確認する必要があります。

アプリケーションを修復する

データがターゲット環境に移行された後、以前にソースを使用していたすべてのアプリケーションは、ターゲットの使用を開始する必要があります。 このタスクを実現するには、アプリケーションの変更が必要な場合があります。

Data Migration Assistant で推奨されている修正をユーザー データベースに適用します。 一貫性を確保し、自動化を可能にするために、これらの修正プログラムをスクリプトにする必要があります。

テストを実行する

データベース移行に対するテスト アプローチは、次のアクティビティで構成されます。

  1. 検証テストを作成する: データベース移行をテストするには、SQL クエリを使用する必要があります。 ソースとターゲットの両方のデータベースに対して実行する検証クエリを作成します。 その検証クエリでは、定義されているスコープに対応する必要があります。
  2. テスト環境を設定する: このテスト環境には、ソース データベースとターゲット データベースのコピーを含める必要があります。 必ずテスト環境を分離してください。
  3. 検証テストを実行する: ソースとターゲットに対して検証テストを実行した後、結果を分析します。
  4. パフォーマンス テストを実行する: ソースとターゲットに対してパフォーマンス テストを実行し、結果を分析して比較します。

ヒント

ターゲット SQL Server パフォーマンスを評価するには、Database Experimentation Assistant を使用するのが便利です。

最適化

移行後の段階は、発生したデータの精度の問題を調整したり、完全性を検証したり、ワークロードでのパフォーマンスの潜在的な問題に対処したりするうえで非常に重要です。

それらの問題と、軽減する手順の詳細については、こちらを参照してください。

次の手順

SQL Server に適用されるサービスの可用性を確認するには、Azure グローバル インフラストラクチャ センターを参照してください

さまざまなデータベースおよびデータ移行シナリオや特殊なタスクを支援するために使用できる Microsoft とサードパーティのサービスとツールのマトリックスについては、データ移行のためのサービスとツールに関するページを参照してください。

Azure SQL の詳細については、以下を参照してください。

クラウド移行のためのフレームワークと導入サイクルの詳細については、次を参照してください。

ライセンスの詳細については、以下を参照してください。

アプリケーション アクセス レイヤーを評価するには、「Data Access Migration Toolkit (プレビュー)」を参照してください。

データ アクセス レイヤーでの A/B テストの実行方法の詳細については、「Database Experimentation Assistant の概要」ページを参照してください。