エクスポート (0) 印刷
すべて展開
このトピックはまだ評価されていません - このトピックを評価する

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

このドキュメントでは、Windows Azure SQL データベースへのデータ定義 (スキーマ) とデータの移行に関するガイダンスを示します。ここでは、主に、SQL Server から SQL データベースへの 1 回限りの移行について説明しています。継続的なデータ共有と SQL データベースのバックアップについては、「SQL データ同期の概要」を参照してください。

移行に関する考慮事項

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

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

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

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

移行に適した状況

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

 

ストレージ サービス

目的

最大サイズ

Windows Azure SQL データベース

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

150 GB

Windows Azure ストレージ

BLOB

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

200GB または 1TB

テーブル

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

100 TB

キュー

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

100 TB

ローカル ストレージ

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

250 GB ~ 2 TB

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

SQL データベースでは、クエリ、トランザクション、およびストアド プロシージャを使用してサーバー側でデータを処理することができ、アプリケーションには結果だけが返されます。大規模なデータセットについてのデータ処理が必要なアプリケーションには、SQL データベースが適しています。大規模なデータセットを格納および取得するアプリケーションでも、データ処理の必要がない場合は、Windows Azure テーブル ストレージの方が適しています。

SQL データベースには現在 150 GB というサイズの制限があり、また SQL データベースの方が Windows Azure ストレージよりもはるかにコストがかかるため、BLOB データについては Windows Azure BLOB ストレージに移行することをお勧めします。これにより、データベース サイズの上限による制約を軽減し、運用コストも削減できます。

詳細については、「Windows Azure Platform のデータ ストレージ サービス」を参照してください。

Windows Azure SQL データベースと SQL Server の比較

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

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

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

  • データベース サイズ

    SQL データベースは、現在 2 つのエディションが提供されています。

    • Web Edition (1 GB、5 GB)

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

    現在のデータベースのサイズを確認し、SQL データベースで使用されるデータベースの許容値内に収まるかを検討することが重要です。データベースが SQL データベースのサイズの制限を超える場合は、データベースを調べ、いくつかの小さいデータベースに分割できないかどうかや、大きなデータを Window Azure BLOB ストレージに移動できないかどうかを検討してください。データベースの分割の詳細については、「フェデレーション: Windows Azure SQL データベースによる、規模に応じて柔軟に対応できるマルチテナント データベース ソリューションの構築」を参照してください。

  • [認証]

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

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

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

  • スキーマ

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

  • Transact-SQL のサポート

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

  • Use ステートメント

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

  • 料金

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

  • 機能の制限

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

接続の処理

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

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

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

  • ネットワーク待機時間

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

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

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

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

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

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

  • 負荷分散

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

  • 調整

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

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

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

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

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

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

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

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

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

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

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

データ インポートのためのデータベースの最適化

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

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

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

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

SQL データベースへの大きなデータの転送

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

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

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

移行ツールの選択

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

SQL Server からの移行

 

ツール

スキーマ

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

データ

データ転送の効率

DAC パッケージ

不可

該当なし

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

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

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

良い

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

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

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

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

一部

悪い

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

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

bcp

不可

該当なし

良い

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

  • 各 bcp コマンドで 1 つのデータベースを転送

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

良い

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

  • CodePlex のオープン ソース

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

SQL Server Integration Services

不可

該当なし

良い

  • 柔軟性が最も高い

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

不可

該当なし

良い

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

他の RDMS からの移行

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

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

SQL データベース間での移行

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

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

CREATE DATABASE destination_database_name AS COPY OF 
[source_server_name.]source_database_name

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

SQL データベース データ同期では、SQL データベースと SQL Server または他の SQL データベースの間の定期的な同期を作成してスケジュールできます。詳細については、「SQL データ同期の概要」を参照してください。

移行ツールの使用

データ層アプリケーションの DAC パッケージ

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

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

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

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

    データ層アプリケーションの抽出ウィザード

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

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

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

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

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

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

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

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

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

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

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

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

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

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

リソース

データ層アプリケーションの BACPAC パッケージ

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

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

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

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

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

SQL データベースのインポート/エクスポート サービス

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

Data-tier Application Framework API を使用して SQL Server から SQL データベースにデータベースを移行する方法を示す SQL DAC の例が提供されています。このパッケージには、2 つのコマンド ライン ユーティリティとそのソース コードが含まれています。

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

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

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

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

インストールと使用方法

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

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

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

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

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

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

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

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

リソース

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

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

インストールと使用方法

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

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

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

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

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

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

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

    [スクリプト作成の詳細オプション]

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

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

リソース

bcp

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

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

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

インストールと使用方法

bcp ユーティリティは SQL Server に付属しています。SQL Server 2008 R2 に付属のバージョンは、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. データ ファイルを SQL データベースにインポートする

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

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

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

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

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

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

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

リソース

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

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

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

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

インストールと使用方法

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

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

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

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

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

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

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

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

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

リソース

SQL Server Integration Services

SQL Server Integration Services (SSIS) を使用すると、さまざまなデータ移行タスクを実行できます。この強力なツールは、複数の異種データの移行元と移行先の間で処理を行う場合に役立ちます。このツールでは、移行元と移行先の間の複雑なワークフローとデータ変換がサポートされます。SSIS は、SQL データベースでは現在はサポートされていませんが、オンプレミスの SQL Server 2008 R2 で実行することで Windows Azure SQL データベースにデータを転送することができます。

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

インストールと使用方法

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

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

SQL データベースへの ADO.NET 接続を構成する際のスクリーンショットを次に示します。

[ADO.NET の接続マネージャーの構成]

パッケージは調整やネットワークの問題が原因で失敗することがあるため、パッケージを設計するときは、障害の発生時に最初からやり直すのではなく、障害の発生時点から再開できるようにすることを検討してください。

ADO.NET 変換先を構成するときは、必ず [可能な場合は一括挿入を使用する] オプションを使用します。これにより、一括読み込み機能を使用して転送のパフォーマンスを向上させることができます。

パフォーマンスを向上させる方法の 1 つとして、ファイル システムの複数のファイルにソース データを分割する方法があります。SSIS デザイナーで、フラット ファイル コンポーネントを使用してそのファイルを参照できます。これにより、[可能な場合は一括挿入を使用する] フラグがオンになっている ADO.Net コンポーネントに各入力ファイルが接続されます。

リソース

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

SQL Server インポートおよびエクスポート ウィザードを使用すると、簡単なインポートまたはエクスポートに使用できる SQL Server Integration Services パッケージを最も簡単な方法で作成できます。このウィザードでは、インポートまたはエクスポートをすぐに実行できるように、接続、変換元、および変換先が構成され、必要なすべてのデータ変換が追加されます。作成したパッケージは、SSIS デザイナーで変更することができます。

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

  • .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) がインストールされます。ただし、Access や Excel など、一部のデータ ソースは、32 ビット プロバイダーでしか使用できません。これらのデータ ソースを操作するには、32 ビット版のウィザードをインストールして実行することが必要になる場合があります。32 ビット版のウィザードをインストールするには、セットアップ時に [クライアント ツール] または [Business Intelligence Development Studio] を選択する必要があります。

インストールと使用方法

SQL Server 2008 R2 以降の SQL Server インポートおよびエクスポート ウィザードは、SQL データベースをサポートしています。このウィザードはいくつかの方法で起動することができます。

  1. [スタート] ボタンをクリックし、[すべてのプログラム][Microsoft SQL Server 2008] の順にポイントして、[データのインポートおよびエクスポート] をクリックします。

  2. Business Intelligence Development Studio のソリューション エクスプローラーで、[SSIS パッケージ] フォルダーを右クリックし、[SSIS インポートおよびエクスポート ウィザード] をクリックします。

  3. Business Intelligence Development Studio で、[プロジェクト] メニューの [SSIS インポートおよびエクスポート ウィザード] をクリックします。

  4. SQL Server Management Studio で、サーバーの種類の [データベース エンジン] に接続し、[データベース] を展開します。次に、データベースを右クリックして [タスク] をポイントし、[データのインポート] または [データのエクスポート] をクリックします。

  5. コマンド プロンプト ウィンドウで、C:\Program Files\Microsoft SQL Server\100\DTS\Binn にある DTSWizard.exe を実行します。

移行の主な手順は次のとおりです。

  1. データをコピーするデータ ソースを選択します。

  2. データのコピー先を選択します。

    SQL データベースにデータをエクスポートするには、コピー先として [.NET Framework Data Provider for SQLServer] を選択する必要があります。

    SQL Server インポートおよびエクスポート ウィザード - [変換先の選択]
  3. テーブルのコピーとクエリのどちらを行うかを指定します。

  4. ソース オブジェクトを選択します。

  5. パッケージを保存して実行します。

SQL Server インポートおよびエクスポート ウィザードでパッケージを作成した後、必要に応じてそのパッケージを保存できます。保存したパッケージは、後で再び実行したり、SQL Server Business Intelligence (BI) Development Studio で改良、強化したりできます。

note
パッケージを保存する場合は、パッケージを変更したり、BI Development Studio でパッケージを実行したりする前に、既存の Integration Services プロジェクトにパッケージを追加しておく必要があります。

リソース

Microsoft コードネーム "Database Transfer"

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

使用方法

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

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

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

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

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

リソース

SQL Server Migration Assistant

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

インストールと使用方法

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

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

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

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

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

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

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

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

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

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

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

リソース

参照


ビルド日:

2013-10-23
この情報は役に立ちましたか。
(残り 1500 文字)
フィードバックをいただき、ありがとうございました

コミュニティの追加

追加
表示:
© 2014 Microsoft. All rights reserved.