エクスポート (0) 印刷
すべて展開

Azure SQL データベースへのデータ移行: ツールと手法

更新日: 2014年5月

このドキュメントでは、Microsoft Azure SQL データベースへのデータ定義 (スキーマ) とデータの移行に関するガイダンスを示します。ここでは、主に、SQL Server から Azure SQL データベースへの 1 回限りの移行について説明しています。

Microsoft Azure では、いくつかの種類のデータ ストレージを利用できます。プロジェクトで 1 つに統一することも複数使用することもできます。

Microsoft Azure SQL データベースは、Azure Platform のサービスとして提供される SQL Server テクノロジです。このクラウド ベースの Azure SQL データベース ソリューションには、迅速なプロビジョニング、コスト効果の高いスケーラビリティ、高可用性の確保、管理オーバーヘッドの削減など、多くの利点があります。Azure SQL データベースでは、オンプレミスの SQL Server アプリケーションで使用する同じツールと開発環境がサポートされます。そのため、多くの開発者は使い慣れた操作で作業できます。

長期的な目標としては、SQL Server と Azure SQL データベースの両方の機能を同じにすることを目指していますが、現在はまだアーキテクチャや実装に違いがあり、Azure SQL データベースにデータベースを移行して Azure SQL データベース ソリューションを開発するときにそれらに対処する必要があります。

Azure SQL データベースにデータベースを移行する前に、移行に適した状況や Azure SQL データベースと SQL Server の違いについて理解しておくことが重要です。

Azure Platform では、大きく分けて 3 種類のストレージ サービスが提供されています。Azure ストレージは、さらにテーブル、BLOB、キューの 3 つに分かれています。Azure ソリューションを設計するときは、それぞれの選択肢について評価し、ソリューションに応じて最適なパフォーマンスが得られるストレージ メカニズムを使用するようにしてください。Azure の新しいサービス階層とサービス内容については、「Azure SQL データベースのサービス階層 (エディション)」を参照してください。

 

ストレージ サービス

目的

最大サイズ

Microsoft Azure SQL データベース

リレーショナル データベース管理システム

150 GB

Azure ストレージ

BLOB

バイナリ ラージ オブジェクト (ビデオやオーディオなど) 用の永続的なストレージ

200 GB または 1 TB

Table

構造化されたデータ用の永続的なストレージ

100 TB

キュー

プロセス間のメッセージ用の永続的なストレージ

100 TB

ローカル ストレージ

インスタンスごとの一時的なストレージ

250 GB ~ 2 TB

ローカル ストレージは、ローカルで実行するアプリケーション インスタンス用の一時的なストレージです。ローカル ストアにアクセスできるのはローカル インスタンスだけです。ハードウェア障害やハードウェアのメンテナンスなどにより、別のハードウェアでインスタンスを再起動した場合、ローカル ストアのデータは保持されません。アプリケーションのデータを信頼性の高い方法で永続的に保持する必要がある場合、インスタンス間でデータを共有する場合、または Azure の外部のデータにアクセスする場合は、代わりに Azure ストレージ アカウントまたは Microsoft Azure SQL データベースを使用することを検討してください。

Azure SQL データベースでは、クエリ、トランザクション、およびストアド プロシージャを使用してサーバー側でデータを処理することができ、アプリケーションには結果だけが返されます。アプリケーションでデータ処理が必要であり、制限されたサイズのデータに対して結合と関係演算を実行する場合は、Azure SQL データベースを選択することをお勧めします。大規模なデータセットを格納および取得するアプリケーションでも、データ処理の必要がない場合は、Azure テーブル ストレージの方が適しています。

Azure SQL データベースには現在、Premium 階層で 500 GB というサイズ制限があり、また Azure SQL データベースの方が Azure ストレージよりもはるかにコストがかかるため、BLOB データについては Azure BLOB ストレージに移行することをお勧めします。これにより、データベース サイズの上限による制約を軽減し、運用コストも削減できます。. Azure の新しいサービス階層とサービス内容については、「Azure SQL データベースのサービス階層 (エディション)」を参照してください。

SQL Server と同様に、Azure SQL データベースは、Transact-SQL ベースのデータベース アクセスに対して表形式のデータ ストリーム (TDS) インターフェイスを公開します。このため、データベース アプリケーションは、SQL Server を使用するときと同じ方法で Azure SQL データベースを使用できます。

SQL Server の管理とは異なり、Azure SQL データベースでは論理的な管理のみ行い、物理的な管理は不要です。データベース、ログイン、ユーザー、およびロールの管理は従来どおりに行いますが、ハード ドライブ、サーバー、ストレージなどの物理的ハードウェアの管理と構成はマイクロソフトが行います。物理的な管理はすべてマイクロソフトが行うため、Azure SQL データベースと SQL Server では、管理、プロビジョニング、Transact-SQL サポート、プログラミング モデル、および機能の面で、いくつかの違いがあります。

主な違いの概要を次に示します。

  • データベース サイズ

    Azure SQL データベースには現在、次のエディションがあります。

    • Web Edition (1 GB、5 GB)

    • Business Edition (10 GB、20 GB、30 GB、40 GB、50 GB、100 GB、150 GB)

    • Premium エディション (最大 500 GB のデータベースをサポート)

    現在のデータベースのサイズを確認し、Azure SQL データベースで使用されるデータベースの許容値内に収まるかを検討することが重要です。データベースが Azure SQL データベースのサイズの制限を超える場合は、データベースを調べ、いくつかの小さいデータベースに分割できないか (シャーディング) どうかや、大きなデータを Windows Azure BLOB ストレージに移動できないかどうかを検討してください。データベースのシャーディングの詳細については、「Azure SQL データベースのスケール アウト」を参照してください。

  • 認証

    Azure SQL データベースでは、SQL 認証のみがサポートされます。アプリケーションで使用している認証方法に変更が必要かどうかを検討する必要があります。セキュリティの制限事項の詳細については、「セキュリティのガイドラインと制限事項」を参照してください。

  • SQL Server データベースのバージョン

    Azure SQL データベースは、SQL Server 2014 に基づいています。SQL Server 2000 または SQL Server 2005 のデータベースを Azure SQL データベースに移行する場合は、そのデータベースに SQL Server 2014 との互換性があることを確認する必要があります。最適な方法は、SQL Server 2014 から Azure SQL データベースに移行する方法です。オンプレミスで SQL Server 2014 にアップグレードしてから、Azure SQL データベースに移行することもできます。以前のバージョンの SQL Server から移行する場合に役立つ情報については、「SQL Server 2014 へのアップグレード」と「Microsoft SQL Server 2004 アップグレード アドバイザー」を参照してください。

  • Schema

    Azure SQL データベースでは、ヒープはサポートされません。どのテーブルにデータを挿入する場合も、事前にクラスター化インデックスが構築されている必要があります。クラスター化インデックスの要件の詳細については、「Azure SQL データベースの内部」を参照してください。

  • Transact-SQL のサポート

    Microsoft Azure SQL データベースでは、Transact-SQL 言語のサブセットをサポートします。データベースを Azure SQL データベースに配置する前に、スクリプトを変更し、サポートされている Transact-SQL ステートメントのみが含まれるようにする必要があります。詳細については、「Transact-SQL リファレンス (データベース エンジン)」を参照してください。

  • Use ステートメント

    Azure SQL データベースでは、USE ステートメントでデータベースを切り替えることはできません。データベースを変更するには、直接そのデータベースに接続する必要があります。

  • 料金

    Azure SQL データベース サブスクリプションの料金はデータベース単位で課金され、金額はエディションに基づいて決まります。また、データ センターとデータをやり取りするたびに、転送するデータの量に応じて追加料金がかかります。アプリケーションの実行方法としては、アプリケーション コードをオンプレミスで実行してデータ センターの Azure SQL データベースに接続する方法と、アプリケーション コードを Azure で実行して Azure SQL データベースと同じデータ センターでホストする方法があります。Azure でアプリケーション コードを実行する場合は、データ転送の追加料金はかかりません。インターネットのネットワーク待機時間については、どちらのモデルを使用しても軽減されないことに注意してください。詳細については、「価格の概要」を参照してください。

  • 機能の制限

    SQL Server の一部の機能は、現在 Azure SQL データベースでサポートされていません。これには、SQL エージェント、フルテキスト検索、Service Broker、バックアップと復元、共通言語ランタイム (CLR)、SQL Server Integration Services などがあります。詳しい一覧については、「SQL Server の機能の制限」を参照してください。バックアップと復元のオプションの詳細については、「Azure SQL データベースのバックアップと復元」を参照してください。

Azure SQL データベースのようなクラウド ベースのデータベースを使用する場合は、インターネットやその他の複合ネットワーク経由の接続が必要になります。そのため、接続が予期せずに切断した場合に対応できるように備える必要があります。

Azure SQL データベースでは、共有リソース上で大規模なマルチテナント データベース サービスが提供されます。Azure SQL データベースを利用するすべてのお客様に良好なエクスペリエンスを提供するために、一部の状況でサービスへの接続を切断することがあります。

接続が終了される原因を次に示します。

  • ネットワーク待機時間

    待機時間が増えれば、Azure SQL データベースへのデータ転送にかかる時間が長くなります。この影響を軽減する最も効果的な方法は、複数の同時実行ストリームを使用してデータを転送することです。ただし、並列処理の効果はネットワークの帯域幅によって制限されます。

    Azure SQL データベースでは、データベースを各地のデータ センターに作成することができます。接続場所から各データ センターまでの間のネットワーク待機時間は、その距離やネットワーク接続に応じて異なります。ネットワーク待機時間を短くするには、大部分のユーザーからできるだけ近いデータ センターを選択してください。ネットワーク待機時間の計測については、「Azure SQL データベースのクライアント待機時間のテスト」を参照してください。

    アプリケーション コードを Azure でホストすると、アプリケーションから Azure SQL データベース にデータを要求する際のネットワーク待機時間を最小限に抑えられるため、アプリケーションのパフォーマンスの向上に効果があります。

    また、ネットワーク経由のやり取りを最小限に抑えることで、ネットワーク関連の問題を減らすことができます。

  • データベースのフェールオーバー

    Azure SQL データベースでは、データの可用性とビジネスの継続性を維持するために、データの冗長コピーを複数の物理サーバーにレプリケートします。ハードウェアの障害やアップグレードが発生した場合、Azure SQL データベースの自動フェールオーバーによってアプリケーションの可用性が最適化されます。現在、一部のフェールオーバー アクションによって、セッションが強制的に終了されることがあります。

  • 負荷分散

    Azure SQL データベースでは、負荷分散機能により、データ センター内の物理サーバーとサービスが最適に利用されるように負荷が分散されます。コンピューターの CPU 使用率、入出力 (I/O) の待機時間、またはビジー状態のワーカーの数がしきい値を超えると、Azure SQL データベースによってトランザクションが終了され、セッションが切断されることがあります。

  • 調整

    Azure SQL データベースでは、すべてのサブスクライバーにリソースが適切に配分され、一部のサブスクライバーによってリソースが独占されることがないように、特定の状況下でサブスクライバーの接続を終了 (調整) することがあります。Azure SQL データベース エンジン調整サービスでは、特定のパフォーマンスしきい値を継続的に監視することでシステムの状態を評価し、特定のサブスクライバーがシステムの状態にどの程度影響を与えているかに応じてさまざまなレベルの調整を開始します。

    Azure SQL データベース エンジン調整で監視されるパフォーマンスしきい値を次に示します。

    • Azure SQL データベースの使用中の物理データベースに割り当てられている領域の割合。ソフト制限でもハード制限でも割合は同じです。

    • Azure SQL データベースの使用中のログ ファイルに割り当てられている領域の割合。ログ ファイルは複数のサブスクライバーで共有されます。ソフト制限とハード制限で割合が異なります。

    • ログ ドライブへの書き込みの遅延時間 (ミリ秒)。ソフト制限とハード制限で割合が異なります。

    • データ ファイルの読み取りの遅延時間 (ミリ秒)。ソフト制限でもハード制限でも割合は同じです。

    • プロセッサの使用率。ソフト制限でもハード制限でも割合は同じです。

    • データベース サブスクリプションの最大許容サイズに対する各データベースのサイズ。ソフト制限でもハード制限でも割合は同じです。

    • データベースに対してアクティブな要求を行っているワーカーの総数。ソフト制限とハード制限で割合が異なります。このしきい値を超えた場合は、他のしきい値とは異なる基準でブロックするデータベースが選択されます。利用しているワーカーの数が最も多いデータベースの方が、トラフィック速度が最も高いデータベースよりも、調整の対象になる可能性が高くなります。

詳細については、「Azure SQL データベースの接続管理」および「Azure SQL データベース パフォーマンス/弾力性ガイド」を参照してください。

接続が切断された場合の処理方法としては、接続を再確立したうえで、失敗したコマンドまたはクエリを再度実行するのが最も効果的です。詳細については、「一時的なエラー処理のフレームワーク」を参照してください。

データベースに対していくつかの処理を行うことで、移行のパフォーマンスを向上させることができます。

  • 非クラスター化インデックスは後で作成するか無効にします。データを読み込む前に追加のインデックスを作成すると、同じ量のデータを読み込むのにかかる時間が大幅に増えることがあります。

  • トリガーと制約チェックを無効にします。テーブルに行を挿入したときにトリガーが起動し、別のテーブルに行が再挿入されることがあります。トリガーは遅延の原因となるため、再挿入の必要がなければ無効にしてかまいません。

  • インポートするデータをテーブル上のクラスター化インデックスに従って並べ替えると、一括インポートのパフォーマンスが向上します。詳細については、「データの一括インポート時の並べ替え順の制御」を参照してください。

大きなデータを移行する場合は、SQL Server Integration Services (SSIS) および bcp ユーティリティを使用するとパフォーマンスが向上します。

Azure SQL データベースに大きなデータを読み込むときは、パフォーマンスを最大限に高めるために、データを複数の同時実行ストリームに分割することをお勧めします。

既定では、データ ファイルのすべての行が 1 つのバッチとしてインポートされます。複数のバッチに行を分散するために、可能な場合はバッチ サイズを指定します。バッチのトランザクションが失敗すると、現在のバッチの挿入のみがロールバックされます。コミットされたトランザクションによって既にインポートされているバッチは、それ以降の失敗による影響を受けません。シナリオや環境に合わせてさまざまなバッチ サイズの設定をテストして、最適なバッチ サイズを特定することをお勧めします。

Azure SQL データベースへのデータベースの移行は、さまざまなツールを使用して行うことができます。一般に、データベースを移行するには、スキーマの移行とデータの移行を行います。その一方だけをサポートするツールもあれば、両方をサポートするツールもあります。また、一括コピー API を使用して、独自のデータ アップロード アプリケーションを作成することもできます。

 

ツール

Schema

Azure SQL データベースの互換性チェック

Data

データ転送の効率

メモ

DAC パッケージ

いいえ

該当なし

  • データを除く、すべてのデータベース オブジェクトを含むエンティティ

  • Azure SQL データベースの完全なサポート

DAC BACPAC インポート/エクスポート

良い

  • DAC Framework による DAC とデータのエクスポート/インポート

  • クラウドのみでサポートされるサービス

  • SQL DAC の例を CodePlex から入手可能

SSMS のスクリプト生成ウィザード

一部

悪い

  • Azure SQL データベースのスクリプトを明示的に生成可能

  • 小さいデータベースに効果的

bcp

いいえ

該当なし

良い

  • 既存のテーブルへの効率的なデータの転送

  • 各 bcp コマンドで 1 つのテーブルを転送

Azure SQL データベース移行ウィザード

良い

  • トレース ファイルの評価などの優れた機能

  • CodePlex のオープン ソース

  • マイクロソフトのサポート対象外

SQL Server Integration Services

いいえ

該当なし

良い

  • 柔軟性が最も高い

  • ファイルを保存することなく、データ ソース間で直接転送

SQL Server インポートおよびエクスポート ウィザード

いいえ

該当なし

良い

  • SSIS のシンプルな UI、SSMS でも使用可能

Azure SQL データベース Migration Assistant を使用すると、Access、MySQL、Oracle、Sybase から Azure SQL データベースにデータベースを移行できます。

Microsoft コードネーム "Data Transfer" では、CSV ファイルや Excel ファイルのデータを Azure SQL データベースに転送できます。

Azure SQL データベースから別の Azure SQL データベースにデータを移行するには、Azure SQL データベースのコピーを使用します。

Azure SQL データベースでは、データベースのコピー機能をサポートしています。Azure SQL データベースで新しいデータベースを作成するときにこの機能を使用すると、トランザクション上の一貫性が確保された状態で既存のデータベースのコピーが作成されます。データベースをコピーするには、新しいデータベースが作成される Azure SQL データベース サーバーの master データベースに接続し、CREATE DATABASE コマンドを使用する必要があります。

CREATE DATABASE destination_database_name AS COPY OF 
[source_server_name.]source_database_name

新しいデータベースの配置先は、同じサーバーでも別のサーバーでもかまいません。このステートメントを実行するユーザーは、コピー先サーバー (新しいデータベースの作成先) の dbmanager ロールのメンバーであり、コピー元データベースの dbowner である必要があります。詳細については、「Azure SQL データベースでのデータベースのコピー」を参照してください。

データ層アプリケーション (DAC) は、SQL Server 2008 R2 で導入され、Visual Studio 2010 の開発者ツールでサポートされています。DAC は、データベースのスキーマ、コード、および構成をパッケージ化して別のサーバーに配置するのに役立ちます。DAC を配置する準備ができたら、その DAC をビルドして DAC パッケージ (.bacpac) を生成します。DAC パッケージは XML の形式で DAC 定義を格納する圧縮ファイルです。SQL Server Management Studio で、DAC パッケージにデータベース スキーマをエクスポートし、Azure SQL データベースにパッケージを配置することができます。

noteメモ
DACPAC 形式は BACPAC 形式とは異なります。BACPAC 形式は DACPAC 形式を拡張したものであり、標準の .dacpac ファイルの内容に加え、メタデータ ファイルと JavaScript Object Notation (JSON) でエンコードされたテーブル データが含まれます。BACPAC 形式については、DAC のインポート/エクスポートのセクションで説明します。

DAC パッケージは、配置前に Visual Studio 2010 を使用して変更が可能です。DAC プロジェクト内で、配置前および配置後のスクリプトを指定できます。これらのスクリプトは Transact-SQL で記述され、配置後スクリプトでデータを挿入するなど、任意の処理を実行できます。ただし、DAC パッケージを使用して大量のデータを挿入することはお勧めしません。

DAC は SQL Server 20008 R2 に付属しています。SQL Server データベースのスキーマを Azure SQL データベースに移行するには、次の 2 つの手順を実行します。

  1. SQL Server データベースから DAC パッケージを抽出する:

    DAC パッケージは、データ層アプリケーションの抽出ウィザードを使用して、既存のデータベースに基づいて作成できます。DAC パッケージには、データベースから選択したオブジェクトと、関連するインスタンスレベル オブジェクト (データベース ユーザーにマップされるログインなど) が含まれます。

    ウィザードを開く方法を示すスクリーンショットを次に示します。



    このウィザードの主な手順は次のとおりです。

    1. DAC のアプリケーション名、バージョン、説明、パッケージ ファイルの場所など、DAC のプロパティを設定します。

    2. すべてのデータベース オブジェクトが DAC でサポートされていることを確認します。

    3. パッケージをビルドします。

    DAC を抽出できるのは、Azure SQL データベース、または SQL Server 2005 Service Pack 4 (SP4) 以降のデータベースに限られます。DAC でサポートされていないオブジェクトまたは包含ユーザーがデータベースに存在する場合は、DAC を抽出できません。DAC でサポートされるオブジェクトの種類の詳細については、「SQL Server オブジェクトとバージョンの DAC サポート」を参照してください。

  2. Azure SQL データベースに DAC パッケージを配置する:

    DAC パッケージは、データ層アプリケーションの配置ウィザードを使用して配置できます。最初に、SQL Server Management Studio から Azure SQL データベース サーバーに接続する必要があります。データベースがない場合はウィザードで作成されます。このウィザードでは、オブジェクト エクスプローラーの階層で選択したノードに関連付けられているデータベース エンジンのインスタンスに DAC パッケージが配置されます。たとえば、次のスクリーンショットの場合は、maqqarly23.database.windows.net という SQL Server にパッケージが配置されます。

    Important重要
    DAC パッケージを運用環境に配置する前にパッケージの内容を確認するようにしてください。外部で開発されたパッケージを配置する場合は特に注意が必要です。詳細については、「DAC パッケージの検証」を参照してください。

    このウィザードの主な手順は次のとおりです。

    1. DAC パッケージを選択します。

    2. パッケージの内容を確認します。

    3. データベースの配置プロパティで Azure SQL データベースを指定します。

    4. パッケージを配置します。

ウィザードを使用する代わりに、PowerShell の dacstore.install() メソッドを使用して Azure SQL データベースにスキーマを移行することもできます。

データ層アプリケーション (DAC) とは、データ層オブジェクトを開発、配置、および管理するための自己完結型のコンポーネントです。データ層の開発者とデータベース管理者は、DAC を使用して、データベース オブジェクトやインスタンス オブジェクトなどの Microsoft SQL Server オブジェクトを DAC パッケージ (.dacpac ファイル) と呼ばれる 1 つのエンティティにパッケージ化することができます。BACPAC 形式は DACPAC 形式を拡張したものであり、標準の .dacpac ファイルの内容に加え、メタデータ ファイルと JavaScript Object Notation (JSON) でエンコードされたテーブル データが含まれます。SQL Server データベースを .bacpac ファイルにパッケージ化したら、それを使用して Azure SQL データベースにデータベースを移行できます。

noteメモ
DACPAC と BACPAC は似ていますが、実際にターゲットとするシナリオはまったく異なります。DACPAC は、スキーマのキャプチャと配置に重点を置きます。基本的なユース ケースは、スキーマを開発環境、テスト環境、さらに実稼働環境に配置することです。

BACPAC は、スキーマおよびデータのキャプチャに重点を置きます。論理的にはデータベース バックアップに相当し、既存のデータベースのアップグレードには使用できません。BACPAC の基本的なユース ケースは、あるサーバーから別のサーバー (または Azure SQL データベース) にデータベースを移動し、既存のデータベースをオープン フォーマットでアーカイブすることです。

Azure SQL データベースのインポート/エクスポート サービスを使用できます。このサービスを使用すると、Azure SQL データベースと Azure BLOB ストレージの間で BACPAC ファイルのインポートとエクスポートを直接実行できます。Azure SQL データベースのインポート/エクスポート サービスでは、要求の送信用にいくつかの REST エンドポイントが公開されています。

Azure SQL データベースのインポート/エクスポート サービスを呼び出すインターフェイスは、Azure Platform Management Portal にあります。

現在、SQL Server Management Studio では、BACPAC ファイルへのデータベースのエクスポートはサポートされていません。データのインポートやエクスポートには DAC API を利用します。

データ層アプリケーション フレームワーク API を使用して SQL Server から Azure SQL データベースにデータベースを移行する方法を示す SQL DAC の例が提供されています。このパッケージには、2 つのコマンド ライン ユーティリティとそのソース コードが含まれています。

  • DAC インポート/エクスポート クライアント側ツールを使用すると、bacpac ファイルをエクスポートしてインポートすることができます。

  • DAC インポート/エクスポート サービス クライアントを使用すると、Azure SQL データベースのインポート/エクスポート サービスを呼び出して、Azure BLOB ストレージと Azure SQL データベースの間で bacpac ファイルのインポートとエクスポートを実行できます。

    Azure BLOB ストレージに bacpac ファイルをコピーする方法の 1 つに、Microsoft コードネーム "Data Transfer" を使用する方法があります。詳細については、Microsoft コードネーム Data Transfer のセクションを参照してください。

noteメモ
Data-tier Application (DAC) Framework を使用して Azure SQL データベースにデータをインポートおよびエクスポートする機能は、現在は CodePlex の例としてのみ提供されています。このツールはコミュニティでのみサポートされます。

ここでは、SQL DAC の例に含まれるクライアント ツールを使用して、SQL Server から Azure SQL データベースにデータベースを移行する方法を示します。

SQL DAC の例は、CodePlex からダウンロードできます。サンプルを実行するには、コンピューターに Data-Tier Application Framework もインストールする必要があります。

このツールを使用してデータベースを移行する前に、移行先の Azure SQL データベースを作成する必要があります。このツールで移行を行うには、次の 2 つの手順を実行します。

  1. SQL Server データベースをエクスポートする

    データベースが SQL Server 2014 R2 で実行されており、統合セキュリティを使用してアクセスできるとします。次の引数を指定してサンプルの EXE を呼び出すと、".bacpac" ファイルにデータベースをエクスポートできます。

    DacCli.exe -s serverName -d databaseName -f C:\filePath\exportFileName.bacpac -x -e
    
  2. パッケージを Azure SQL データベースにインポートする

    エクスポートした後、次の引数を指定して、エクスポート ファイルを Azure SQL データベースにインポートできます。

    DacCli.exe -s serverName.database.windows.net -d databaseName -f C:\filePath\exportFileName.bacpac -i -u userName -p password
    

スクリプト生成ウィザードを使用すると、SQL Server データベースや選択したデータベース内の関連オブジェクトの Transact-SQL スクリプトを作成できます。作成したスクリプトは、Azure SQL データベースへのスキーマやデータの転送に使用できます。

スクリプト生成ウィザードは、SQL Server 2008 R2 と共にインストールされます。このウィザードは、SQL Server Management Studio 2008 R2 から開くことができます。ウィザードを開く方法を示すスクリーンショットを次に示します。

このウィザードの主な手順は次のとおりです。

  1. エクスポートするオブジェクトを選択します。

  2. スクリプト作成オプションを設定します。スクリプトをファイル、クリップボード、または新しいクエリ ウィンドウに保存したり、Web サービスにパブリッシュしたりできます。

  3. スクリプト作成の詳細オプションを設定します。

    既定では、スタンドアロンの SQL Server インスタンスのスクリプトが生成されます。構成を変更するには、[スクリプト作成オプションの設定] ダイアログ ボックスで [詳細設定] をクリックし、[データベース エンジンの種類に対応したスクリプト] プロパティを [SQL データベース] に設定する必要があります。



    また、要件に基づいて、[スクリプトを作成するデータの種類] を[スキーマのみ]、[データのみ]、[スキーマとデータ] のいずれかに設定することができます。

スクリプトの作成後、データベースを転送するために Azure SQL データベースに対してスクリプトを実行する前に、スクリプトを変更することもできます。

bcp ユーティリティは、SQL Server または Azure SQL データベースへの一括アップロードを高いパフォーマンスで実行できるように設計されたコマンド ライン ユーティリティです。このツールは移行ツールではなく、スキーマの抽出や作成には使用できません。事前にいずれかのスキーマ移行ツールを使用して Azure SQL データベースにスキーマを転送しておく必要があります。

noteメモ
bcp は Azure SQL データベースのデータのバックアップと復元に使用できます。

noteメモ
Azure SQL データベース移行ウィザードでは bcp が使用されます。

bcp ユーティリティは SQL Server に付属しています。SQL Server 2014 に付属のバージョンは、Azure SQL データベースで完全にサポートされます。

bcp を使用するときは、次の 2 つの手順を実行します。

  1. データをデータ ファイルにエクスポートする

    SQL Server データベースからデータをエクスポートするには、コマンド プロンプトで次のステートメントを実行します。

    bcp tableName out C:\filePath\exportFileName.dat –S serverName –T –n -q
    
    out パラメーターは、SQL Server からデータをコピーすることを示します。-n パラメーターを指定することで、データのネイティブのデータベース データ型を使用して一括コピー操作を実行します。また、-q パラメーターを指定して、bcp ユーティリティと SQL Server インスタンスとの接続で SET QUOTED_IDENTIFIERS ON ステートメントを実行します。

  2. データ ファイルを にインポートするAzure SQL データベース

    データを Azure SQL データベースにインポートするには、インポート先のデータベースでスキーマを作成してから、コマンド プロンプトで bcp ユーティリティを実行します。

    Bcp tableName in c:\filePath\exportFileName.dat –n –U userName@serverName –S tcp:serverName.database.windows.net –P password –b batchSize
    
    –b パラメーターで、インポートするデータのバッチあたりの行数を指定します。各バッチは、コミットされる前にすべてのバッチをインポートする個別のトランザクションとしてインポートおよび記録されます。データの移行時に Azure SQL データベースへの接続が切断されないように、最適なバッチ サイズを特定して使用することをお勧めします。

bcp を使用して大量のデータを転送する際のベスト プラクティスをいくつか紹介します。

  1. データ型を変換しなくても済むように、–N オプションを使用してネイティブ モードでデータを転送します。

  2. –b オプションを使用してバッチ サイズを指定します。既定では、データ ファイルのすべての行が 1 つのバッチとしてインポートされます。トランザクションが失敗した場合、現在のバッチの挿入のみがロールバックされます。

  3. –h "TABLOCK, ORDER(…)" オプションを使用します。–h "TABLOCK" を指定すると、一括読み込み操作中に一括更新のテーブルレベルのロックが適用されます。これを指定しない場合、行レベルのロックが適用されます。このオプションを指定することで、テーブルでのロックの競合を減らすことができます。–h "ORDER(…)" オプションでは、データ ファイル内のデータの並べ替え順序を指定します。インポートするデータをテーブル上のクラスター化インデックスに従って並べ替えると、一括インポートのパフォーマンスが向上します。

–F オプションと –L オプションで最初と最後の行を指定することで、フラット ファイル内のアップロードする範囲を指定できます。これを使用すると、複数のストリームでアップロードを行う場合に、データ ファイルを物理的に分割する必要がなくなります。

Azure SQL データベース移行ウィザードは、SQL Server 2005/2008 以降のデータベースを Azure SQL データベースに移行するのに役立つオープン ソースの UI ツールです。これを使用すると、データを移行するだけでなく、互換性の問題を特定して可能な場合は修正し、既知のすべての問題を通知することができます。

Azure SQL データベース移行ウィザードには、接続が切断された場合の処理ロジックが組み込まれています。このウィザードでは、トランザクションを小さい単位に分割し、Azure SQL データベースで接続が終了されるまで処理を継続します。接続エラーが発生すると、Azure SQL データベースとの新しい接続を確立し、最後に正常に実行されたコマンドの後の処理を特定します。同様に、bcp を使用して Azure SQL データベースにデータをアップロードする場合も、データを小さいセクションに分割して処理し、再試行ロジックを使用することで、接続が閉じられる前に正常にアップロードされた最後のレコードを特定します。その後、bcp によるデータのアップロードを次のレコードのセットから再開します。

noteメモ
Azure SQL データベース移行ウィザードは、コミュニティで作成されたオープン ソースのツールであり、コミュニティでサポートされます。

Azure SQL データベース移行ウィザードは、http://sqlazuremw.codeplex.com からダウンロードできます。ローカル コンピューターにパッケージを解凍し、SQLAzureMW.exe を実行します。アプリケーションのスクリーンショットを次に示します。

このウィザードでは、次の手順を実行します。

  1. 画面の指示に従って処理を選択します。

  2. スクリプトを作成するソースを選択します。

  3. スクリプトを作成するデータベース オブジェクトを選択します。

  4. スクリプトを生成します。スクリプトは後で変更することもできます。

  5. 対象のサーバーに接続するための情報を入力します。対象の Azure SQL データベースを作成することもできます。

  6. 対象のサーバーに対してスクリプトを実行します。

SQL Server Integration Services (SSIS) を使用すると、さまざまなデータ移行タスクを実行できます。この強力なツールは、複数の異種データの移行元と移行先の間で処理を行う場合に役立ちます。このツールでは、移行元と移行先の間の複雑なワークフローとデータ変換がサポートされます。SSIS は、Azure SQL データベースと同様に Azure サービスとして使用することはできません。オンプレミスの SQL Server で SSIS パッケージを実行すると、Azure SQL データベースにデータを転送できます。また、Azure 仮想マシンで実行されている SQL Server で SSIS パッケージを実行すると、Microsoft Azure SQL データベースにデータを転送できます。ただし、SSIS をホストするために SQL IaaS を使用することもできます。

SSIS インポートおよびエクスポート ウィザードでは、1 つの移行元から移行先にデータを変換せずに移動するパッケージを作成できます。このウィザードを使用すると、テキスト ファイルや他の SQL Server インスタンスなど、さまざまな種類の移行元からさまざまな種類の移行先にデータをすばやく移動できます。詳細については、「Integration Services を使用して Azure SQL データベースにデータベースを移行する方法」を参照してください。

Azure SQL データベースに接続するには、SQL Server 2008 R2 以降のバージョンの SSIS を使用する必要があります。

Azure SQL データベースに必要なサポートは ADO.NET のアダプターに含まれています。これには、データを一括読み込みするための Azure SQL データベース用のオプションが用意されています。Azure SQL データベースへのデータの転送には ADO.NET 変換先アダプターを使用します。OLEDB を使用した Microsoft Azure SQL データベースへの接続はサポートされていません。

パッケージは調整やネットワークの問題が原因で失敗することがあるため、パッケージを設計するときは、障害の発生時に最初からやり直すのではなく、障害の発生時点から再開できるようにすることを検討してください。詳細については、「SSIS による Azure およびハイブリッド データ移行」を参照してください。

ADO.NET 変換先を構成するときは、必ず [可能な場合は一括挿入を使用する] オプションを使用します。これにより、一括読み込み機能を使用して転送のパフォーマンスを向上することができます。. 詳細については、「SSIS の運用とチューニングのガイド」を参照してください。

SQL Server インポートおよびエクスポート ウィザードを使用すると、簡単なインポートまたはエクスポートに使用できる SQL Server Integration Services パッケージを最も簡単な方法で作成できます。詳細については、「インポートおよびエクスポート ウィザードを使用して Azure SQL データベースにデータベースを移行する方法」を参照してください。

このウィザードでは、次のデータ ソースがサポートされます。

  • .NET Framework Data Provider for ODBC

  • .NET Framework Data Provider for Oracle

  • .NET Framework Data Provider for SQL Server

  • フラット ファイル ソース

  • Microsoft OLE DB Provider for Analysis Services 10.0

  • Microsoft OLE DB Provider for Search

  • Microsoft OLE DB Provider for SQL Server

  • SQL Native Client

  • SQL Server Native Client 10.0

SQL Server インポートおよびエクスポート ウィザードでは、データの転送だけを実行できます。このウィザードを使用する前に、いずれかのスキーマ移行ツール (スクリプト生成ウィザードや DAC パッケージなど) を使用してスキーマを転送しておく必要があります。

noteメモ
64 ビット コンピューターには、Integration Services によって 64 ビット版の SQL Server インポートおよびエクスポート ウィザード (DTSWizard.exe) がインストールされます。ただし、一部のデータ ソースは 32 ビット プロバイダーしか使用できません。これらのデータ ソースを操作するには、32 ビット版のウィザードをインストールして実行することが必要になる場合があります。32 ビット版のウィザードをインストールするには、セットアップ時に [クライアント ツール] または [Business Intelligence Development Studio] を選択する必要があります。

Microsoft コードネーム "Data Transfer" は、コンピューターから Azure SQL データベースまたは Azure BLOB ストレージにデータを転送できるクラウド サービスです。Azure BLOB ストレージには任意の形式のデータをアップロードでき、Azure SQL データベースにはコンマ区切り値 (CSV) または Microsoft Excel (.xlsx) の形式で保存されたデータをアップロードできます。Azure SQL データベースにデータをアップロードすると、データベース テーブルに変換されます。

データ転送サービスには、https://web.datatransfer.azure.com/ からアクセスできます。ホーム ページから、データをインポートしたり、データセットやストアを管理したりできます。

Azure SQL データベースへのデータのインポート処理の手順は次のとおりです。

  • Azure SQL データベースの資格情報を入力します。

  • 転送するファイルを選択します。

  • データ ファイルを分析し、データを転送します。

SQL Server Migration Assistant (SSMA) 製品ファミリを使用すると、Oracle、Sybase、MySQL、Microsoft Access の各データベースから、Azure SQL データベースまたは SQL Server への確実な移行を実現し、移行にかかるコストを削減できます。移行の評価分析、スキーマおよび SQL ステートメントの変換、データの移行、移行テストなど、移行に関するあらゆる作業を SSMA によって自動化できます。

SSMA は Web からダウンロードできます。最新バージョンをダウンロードするには、SQL Server 移行ツールの製品ページを参照してください。このドキュメントの作成時点の最新バージョンは次のとおりです。

SSMS は、Windows インストーラー ベースのウィザードを使用してインストールします。SSMA は無償で利用できますが、登録キーのダウンロードが必要になります。アプリケーションをインストールして実行すると、登録を行って登録キーをダウンロードするように求められます。

SSMA for Access の移行処理の手順を次に示します。

  1. 新しい移行ウィザードを作成します。[移行先] ボックスでは [Azure SQL データベース] を選択します。

  2. Access データベースを追加します。

  3. 移行する Access オブジェクトを選択します。

  4. Azure SQL データベース に接続します。

  5. テーブルをリンクします。Azure SQL データベースで既存の Access アプリケーションを使用する場合は、移行した Azure SQL データベース テーブルに元の Access テーブルをリンクできます。リンクを設定すると、クエリ、フォーム、レポート、およびデータ アクセスのページで、Access データベースのデータではなく、Azure SQL データベースのデータを使用するように Access データベースが変更されます。

  6. 選択したオブジェクトを変換します。

  7. 変換したオブジェクトを Azure SQL データベースに読み込みます。

  8. 選択した Access オブジェクトのデータを移行します。

関連項目

表示:
© 2014 Microsoft