SQL Server データベースの Azure SQL Database への移行

適用対象: Azure SQL Database

この記事では、SQL Server 2005 以降のデータベースを Azure SQL Database に移行するための主な方法について説明します。 Azure SQL Managed Instance への移行に関する詳細については、Azure SQL Managed Instance に SQL Server インスタンスを移行する方法に関するページをご覧ください。 Azure SQL に移行するための移行オプションとツールの選択に関するガイダンスについては、「Azure SQL への移行」を参照してください。

単一データベースまたはプールされたデータベースに移行する

SQL Server 2005 以降のデータベースを Azure SQL Database に移行する場合、主に 2 つの方法があります。 1 つ目の方法の方が簡単ですが、移行中にダウンタイムが必要です。これは長時間にわたる可能性があります。 2 つ目の方法はより複雑ですが、移行中のダウンタイムは大幅に解消されます。

どちらの場合も、Data Migration Assistant (DMA) を使用してソース データベースに Azure SQL Database との互換性があることを確認する必要があります。 SQL Database は、SQL Server との機能の同等性を目指していますが、サーバーレベルの操作とデータベース間の操作に関連した問題は残っています。 データベースやアプリケーションで、部分的にしかサポートされていない機能またはサポートされていない機能を使用している場合には、SQL Server データベースの移行前にリエンジニアリングを実施してこれらの非互換性を修正する必要があります。

注意

Microsoft Access、Sybase、MySQL Oracle、DB2 などの SQL Server 以外のデータベースを Azure SQL Database に移行する場合は、 SQL Server Migration Assistantチームのブログ記事を参照してください。

方法 1:移行中にダウンタイムを伴う移行

ある程度のダウンタイムが許容される場合、または将来の移行に備えて運用データベースの移行をテストする場合には、この方法を使用して、単一データベースまたはプールされたデータベースを移行します。 チュートリアルについては、SQL Server データベースを移行するを参照してください。

次の一覧は、単一データベースまたはプールされたデータベースの SQL Server データベースをこの方法で移行する場合の一般的なワークフローを示します。 SQL Managed Instance への移行については、SQL Server から Azure SQL Managed Instance へのガイドに関する記事を参照してください。

VSSSDT の移行ダイアグラム

  1. Data Migration Assistant (DMA) の最新バージョンを使用して、データベースの互換性を評価します。
  2. 必要な修正を Transact-SQL スクリプトとして準備します。
  3. 移行するソース データベースについて、トランザクション上一貫性のあるコピーを作成するか、または移行の実行中にソース データベースで新規トランザクションが発生しないようにします。 後者のオプションを実行するには、クライアント接続を無効にする方法と、データベース スナップショットを作成する方法があります。 移行が完了した後、トランザクション レプリケーションを使用して、移行したデータベースを更新すると、移行のカットオフ後に発生した変更を反映させることができます。 トランザクション移行を使用した移行に関するセクションを参照してください。
  4. Transact-SQL スクリプトをデプロイして、データベースのコピーに修正を適用します。
  5. Data Migration Assistant を使用し、Azure SQL Database の新しいデータベースにデータベースのコピーを移行します。

注意

DMA を使用せずに、BACPAC ファイルを使用することもできます。 BACPAC ファイルを Azure SQL Database の新しいデータベースにインポートする方法に関するページを参照してください。

移行中のデータ転送パフォーマンスの最適化

次の一覧は、インポート処理中に最適なパフォーマンスを得るための推奨事項です。

  • 転送のパフォーマンスを最大限に高めるために、予算が許す限り最も高いサービス レベルとコンピューティング サイズを選択する。 移行の完了後にスケールダウンすることでコストを削減できます。
  • BACPAC ファイルと移行先のデータ センターの間の距離を最短にする。
  • 移行中の自動統計を無効にする
  • パーティション テーブルとパーティション インデックス
  • インデックス付きビューを削除し、完了したら作成し直す。
  • ほとんど照会されない履歴データを別のデータベースに移動し、この履歴データを Azure SQL Database の別のデータベースに移行する。 その後、この履歴データは、エラスティック クエリを使用して照会できます。

移行完了後のパフォーマンスの最適化

移行が完了した後に、フル スキャンを実施して統計を更新します。

方法 2:トランザクション レプリケーションの使用

移行中、SQL Server データベースを運用から外す余裕がない場合、移行ソリューションとして SQL Server トランザクション レプリケーションを使用できます。 この方法を使用するには、ソース データベースがトランザクション レプリケーションの要件を満たしているほか、Azure SQL Database に対する互換性を持っている必要があります。 AlwaysOn を使った SQL レプリケーションの詳細については、「Always On 可用性グループのレプリケーションの構成 (SQL Server)」をご覧ください。

このソリューションを使用するには、Azure SQL Database のデータベースを、移行対象の SQL Server インスタンスへのサブスクライバーとして構成します。 トランザクション レプリケーション ディストリビューターは、新しいトランザクションが発生し続ける中で、同期対象のデータベース (パブリッシャー) からデータを同期します。

トランザクション レプリケーションでは、データやスキーマのすべての変更が Azure SQL Database のデータベースに表示されます。 同期が完了し、移行の準備ができたら、アプリケーションの接続文字列を変更し、データベースをポイントするようにします。 トランザクション レプリケーションがソース データベースに残っているすべての変更を抜き取り、すべてのアプリケーションが Azure DB をポイントしたら、トランザクション レプリケーションをアンインストールできます。 これで、Azure SQL Database のデータベースが実稼働システムになります。

SeedCloudTR ダイアグラム

ヒント

トランザクション レプリケーションを使用して、ソース データベースの一部を移行することもできます。 Azure SQL Database に複製するパブリケーションは、複製されるデータベースのテーブルの一部に制限できます。 複製されるテーブルごとに、行の一部または列の一部にデータを制限できます。

トランザクション レプリケーション ワークフローを使用した SQL Database への移行

重要

最新バージョンの SQL Server Management Studio を使用して、Azure と SQL Database の更新プログラムとの同期を維持します。 以前のバージョンの SQL Server Management Studio では、サブスクライバーとして SQL Database を設定できません。 SQL Server Management Studio を更新します

  1. ディストリビューションの設定

  2. パブリケーションの作成

  3. サブスクリプションの作成

SQL Database への移行に関するヒントと相違点

  • ローカル ディストリビューターを使用します。
    • これにより、サーバーのパフォーマンスに影響が生じます。
    • パフォーマンスへの影響を許容できない場合は、別のサーバーを使用できますが、管理がさらに複雑になります。
  • スナップショット フォルダーを選択する際は、選択したフォルダーが、レプリケートするすべてのテーブルの BCP を保持するのに十分な大きさであることを確認してください。
  • スナップショットの作成では、その処理が完了するまで関連付けられたテーブルがロックされるため、スナップショットは適宜スケジュールしてください。
  • Azure SQL Database でサポートされているのは、プッシュ サブスクリプションのみです。 サブスクライバーを追加できるのは、ソース データベースからのみです。

データベース移行に関する互換性の問題の解決

ソース データベースの SQL Server のバージョンと移行するデータベースの複雑さに応じて、さまざまな互換性の問題が発生する可能性があります。 SQL Server のバージョンが古いほど、互換性の問題が多く発生します。 任意の検索エンジンを使用する対象のインターネット検索に加え、以下のリソースを使用します。

インターネット検索および、これらのリソースを使用するだけでなく、Azure SQL Database に関する Microsoft Q&A 質問ページまたは StackOverflow をご利用ください。

重要

Azure SQL Managed Instance を使用すると、互換性の問題をゼロまたは最小限に抑えながら、既存の SQL Server インスタンスとそのデータベースを移行できます。 マネージド インスタンスの概要に関するページを参照してください。

次のステップ