SQL Server データベースのクラウド内の SQL Database への移行SQL Server database migration to SQL Database in the cloud

この記事では、SQL Server 2005 以降のデータベースを Azure SQL Database に移行するための 2 つの主な方法について説明します。In this article, you learn about the two primary methods for migrating a SQL Server 2005 or later database to Azure SQL Database. 1 つ目の方法の方が簡単ですが、移行中にダウンタイムが必要です。これは長時間にわたる可能性があります。The first method is simpler but requires some, possibly substantial, downtime during the migration. 2 つ目の方法はより複雑ですが、移行中のダウンタイムは大幅に解消されます。The second method is more complex, but substantially eliminates downtime during the migration.

どちらの場合も、Data Migration Assistant (DMA) を使用してソース データベースに Azure SQL Database との互換性があることを確認する必要があります。In both cases, you need to ensure that the source database is compatible with Azure SQL Database using the Data Migration Assistant (DMA). SQL Database V12 は、SQL Server との機能の同等性を目指していますが、サーバーレベルの操作とデータベース間の操作に関連した問題は残っています。SQL Database V12 is approaching feature parity with SQL Server, other than issues related to server-level and cross-database operations. データベースやアプリケーションで、部分的にしかサポートされていない機能またはサポートされていない機能を使用している場合には、SQL Server データベースの移行前にリエンジニアリングを実施してこれらの非互換性を修正する必要があります。Databases and applications that rely on partially supported or unsupported functions need some re-engineering to fix these incompatibilities before the SQL Server database can be migrated.

注意

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

方法 1: 移行中にダウンタイムを伴う移行Method 1: Migration with downtime during the migration

ある程度のダウンタイムが許容される場合、または将来の移行に備えて運用データベースの移行をテストする場合には、この方法を使用してください。Use this method if you can afford some downtime or you are performing a test migration of a production database for later migration. チュートリアルについては、SQL Server データベースを移行するを参照してください。For a tutorial, see Migrate a SQL Server database.

次の一覧は、この方法を使用した SQL Server データベース移行の一般的なワークフローを示します。The following list contains the general workflow for a SQL Server database migration using this method.

VSSSDT の移行ダイアグラム

  1. Data Migration Assistant (DMA) の最新バージョンを使用して、データベースの互換性を評価します。Assess the database for compatibility by using the latest version of the Data Migration Assistant (DMA).
  2. 必要な修正を Transact-SQL スクリプトとして準備します。Prepare any necessary fixes as Transact-SQL scripts.
  3. トランザクション上の一貫性が維持された、移行元のソース データベースのコピーを作成し、ソース データベースにそれ以上変更が行われないようにします (移行が完了した後に、このような変更を手動で適用できます)。Make a transactionally consistent copy of the source database being migrated - and ensure that no further changes are being made to the source database (or you can manually apply any such changes after the migration completes). クライアント接続を無効にしたり、 データベース スナップショットを作成したりするなど、データベースはさまざまな方法で停止できます。There are many methods to quiesce a database, from disabling client connectivity to creating a database snapshot.
  4. Transact-SQL スクリプトをデプロイして、データベースのコピーに修正を適用します。Deploy the Transact-SQL scripts to apply the fixes to the database copy.
  5. Data Migration Assistant を使用して、データベースのコピーを新しい Azure SQL Database に移行します。Migrate the database copy to a new Azure SQL Database by using the Data Migration Assistant.

移行中のデータ転送パフォーマンスの最適化Optimizing data transfer performance during migration

次の一覧は、インポート処理中に最適なパフォーマンスを得るための推奨事項です。The following list contains recommendations for best performance during the import process.

  • 転送のパフォーマンスが最大限に高めるために、予算が許す限り最も高いサービス レベルとパフォーマンス レベルを選択する。Choose the highest service level and performance tier that your budget allows to maximize the transfer performance. 移行の完了後にスケールダウンすることでコストを削減できます。You can scale down after the migration completes to save money.
  • BACPAC ファイルと移行先のデータ センターの間の距離を最短にする。Minimize the distance between your BACPAC file and the destination data center.
  • 移行中の自動統計を無効にする。Disable auto-statistics during migration
  • テーブルとインデックスをパーティション分割する。Partition tables and indexes
  • インデックス付きビューを削除し、完了したら作成し直す。Drop indexed views, and recreate them once finished
  • ほとんど照会されない履歴データを別のデータベースに移動し、この履歴データを別の Azure SQL データベースに移行する。Remove rarely queried historical data to another database and migrate this historical data to a separate Azure SQL database. その後、この履歴データは、エラスティック クエリを使用して照会できます。You can then query this historical data using elastic queries.

移行完了後のパフォーマンスの最適化Optimize performance after the migration completes

移行が完了した後に、フル スキャンを実施して統計を更新します。Update statistics with full scan after the migration is completed.

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

移行中、SQL Server データベースを外す余裕がない場合、移行ソリューションとして SQL Server トランザクション レプリケーションを使用できます。When you cannot afford to remove your SQL Server database from production while the migration is occurring, you can use SQL Server transactional replication as your migration solution. この方法を使用するには、ソース データベースがトランザクション レプリケーションの要件を満たしているほか、Azure SQL Database に対する互換性を持っている必要があります。To use this method, the source database must meet the requirements for transactional replication and be compatible for Azure SQL Database. AlwaysOn を使った SQL レプリケーションの詳細については、「Always On 可用性グループのレプリケーションの構成 (SQL Server)」をご覧ください。For information about SQL replication with AlwaysOn, see Configure Replication for Always On Availability Groups (SQL Server).

このソリューションを使用するには、Azure SQL Database を移行対象のSQL Server インスタンスへのサブスクライバーとして構成します。To use this solution, you configure your Azure SQL Database as a subscriber to the SQL Server instance that you wish to migrate. トランザクション レプリケーション ディストリビューターは、新しいトランザクションが発生し続ける中で、同期対象のデータベース (パブリッシャー) からデータを同期します。The transactional replication distributor synchronizes data from the database to be synchronized (the publisher) while new transactions continue occur.

トランザクション レプリケーションでは、データやスキーマのすべての変更が Azure SQL Database に表示されます。With transactional replication, all changes to your data or schema show up in your Azure SQL Database. 同期が完了し、移行の準備ができたら、アプリケーションの接続文字列を変更し、Azure SQL Database をポイントするようにします。Once the synchronization is complete and you are ready to migrate, change the connection string of your applications to point them to your Azure SQL Database. トランザクション レプリケーションがソース データベースに残っているすべての変更を抜き取り、すべてのアプリケーションが Azure DB をポイントしたら、トランザクション レプリケーションをアンインストールできます。Once transactional replication drains any changes left on your source database and all your applications point to Azure DB, you can uninstall transactional replication. これで、Azure SQL Database が実稼働システムになります。Your Azure SQL Database is now your production system.

SeedCloudTR ダイアグラム

ヒント

トランザクション レプリケーションを使用して、ソース データベースの一部を移行することもできます。You can also use transactional replication to migrate a subset of your source database. Azure SQL Database に複製するパブリケーションは、複製されるデータベースのテーブルの一部に制限できます。The publication that you replicate to Azure SQL Database can be limited to a subset of the tables in the database being replicated. 複製されるテーブルごとに、行の一部または列の一部にデータを制限できます。For each table being replicated, you can limit the data to a subset of the rows and/or a subset of the columns.

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

重要

最新バージョンの SQL Server Management Studio を使用して、Microsoft Azure と SQL Database の更新プログラムとの同期を維持します。Use the latest version of SQL Server Management Studio to remain synchronized with updates to Microsoft Azure and SQL Database. 以前のバージョンの SQL Server Management Studio では、サブスクライバーとして SQL Database を設定できません。Older versions of SQL Server Management Studio cannot set up SQL Database as a subscriber. SQL Server Management Studio を更新しますUpdate SQL Server Management Studio.

  1. ディストリビューションの設定Set up Distribution
  2. パブリケーションの作成Create Publication
  3. サブスクリプションの作成Create Subscription

SQL Database への移行に関するヒントと相違点Some tips and differences for migrating to SQL Database

  1. ローカル ディストリビューターを使用します。Use a local distributor
    • これにより、サーバーのパフォーマンスに影響が生じます。Doing so causes a performance impact on the server.
    • パフォーマンスへの影響を許容できない場合は、別のサーバーを使用できますが、管理がさらに複雑になります。If the performance impact is unacceptable, you can use another server but it adds complexity in management and administration.
  2. スナップショット フォルダーを選択する際は、選択したフォルダーが、レプリケートするすべてのテーブルの BCP を保持するのに十分な大きさであることを確認してください。When selecting a snapshot folder, make sure the folder you select is large enough to hold a BCP of every table you want to replicate.
  3. スナップショットの作成では、その処理が完了するまで関連付けられたテーブルがロックされるため、スナップショットは適宜スケジュールしてください。Snapshot creation locks the associated tables until it is complete, so schedule your snapshot appropriately.
  4. Azure SQL Database でサポートされているのは、プッシュ サブスクリプションのみです。Only push subscriptions are supported in Azure SQL Database. サブスクライバーを追加できるのは、ソース データベースからのみです。You can only add subscribers from the source database.

データベース移行に関する互換性の問題の解決Resolving database migration compatibility issues

ソース データベースの SQL Server のバージョンと移行するデータベースの複雑さに応じて、さまざまな互換性の問題が発生する可能性があります。There are a wide variety of compatibility issues that you might encounter, depending both on the version of SQL Server in the source database and the complexity of the database you are migrating. SQL Server のバージョンが古いほど、互換性の問題が多く発生します。Older versions of SQL Server have more compatibility issues. 任意の検索エンジンを使用する対象のインターネット検索に加え、以下のリソースを使用します。Use the following resources, in addition to a targeted Internet search using your search engine of choices:

インターネット検索やこれらのリソースの参照に加えて、MSDN SQL Server コミュニティ フォーラムStackOverflow も参照してください。In addition to searching the Internet and using these resources, use the MSDN SQL Server community forums or StackOverflow.

次のステップNext steps