セールス: 1-800-867-1380

Azure の仮想マシン内の SQL Server への移行

更新日: 2014年3月

このトピックでは、Windows Server プラットフォームに構築された既存のオンプレミスの SQL Server データベースを Azure の仮想マシン (VM) 内の SQL Server に移行する方法について説明します。また、SQL Server アプリケーションをクラウドの仮想マシンで実行するか、既存の SQL Server データベースを Azure SQL データベース (SQL データベース) に移行するかを判断するためのワークフローも示します。

仮想マシンで SQL Server を使用すると、企業レベルのアプリケーションを Azure に簡単に移行して、それらのアプリケーションの配置、管理、保守の総保有コストを削減することができます。Azure の仮想マシンに既存の SQL Server アプリケーションを移行するときは、最小限のコード変更だけで済み、コード変更の必要がない場合もあります。管理者や開発者は、仮想マシン内の SQL Server の作業にも、オンプレミスの場合と同じ開発ツールや管理ツールを使用できます。

作成者: Selcin Turkarslan
校閲者: Evgeny Krivosheev、Paolo Salvatori、Lindsey Allen、Steve Howard

この記事のセクション

Azure の仮想マシンで SQL Server を使用すると、オンプレミスのシナリオの多くをクラウドで実現できます。

  • アプリケーションの迅速な開発とテスト: 検証が必要なデータベース アプリケーションを実稼働に近い環境で開発します。新しいアプリケーションの検証やテストには、仮想マシン内の SQL Server を使用するため、新しいハードウェアを購入する必要はありません。仮想マシンは、SQL Server を含むプラットフォーム イメージを使用するか、独自のイメージを Azure にアップロードするだけで作成できます。その後、新しい仮想マシンに接続し、データの移動とアプリケーションの設定が完了したら、テストや問題の修正を行うことができます。

  • 仮想化プラットフォームの総保有コスト: 既存のオンプレミスの仮想化プラットフォームを Azure に移動できます。オンプレミスの独自の仮想化プラットフォームで実行する企業レベルのアプリケーションが増加しても、Azure の仮想マシン内の SQL Server インフラストラクチャを利用して Azure に移動できるため、新しいハードウェアを購入する必要はありません。

  • 要求に応じた迅速な拡張: コンピューティング、ストレージ、およびネットワークのリソースを追加で割り当てることで、アプリケーションの使用率の周期的なピークに対処できます。Azure の仮想マシン内の SQL Server インフラストラクチャを使用すれば、特定の時期にしか必要にならない追加のハードウェアを購入する必要はありません。

  • データの可用性と可動性: Azure の仮想マシンで SQL Server データベースをホストすると、オンプレミスとクラウドの両方のアプリケーションの可用性が高まります。

仮想マシン内の SQL Server と Azure SQL データベースのどちらを使用すべきかを判断するためのワークフローを次に示します。

  • 新しいデータベース アプリケーションの場合は、Azure SQL データベース (SQL データベース) または Azure の仮想マシン内の SQL Server のどちらかを使用します。

    • 必要なすべての機能が SQL データベースでサポートされる場合は、Azure で新しい SQL データベース インスタンスをプロビジョニングします。Azure SDK と Visual Studio、Java、PHP、または Node.js 用のプラグインを使用して、新しいデータベース アプリケーションを開発します。アプリケーションを Azure に配置し、SQL データベースでテーブルを作成します。

    • 必要なすべての機能が SQL データベースでサポートされない場合、アプリケーション データベースの設計の変更にコストをかけないようにするには、管理ポータルで提供されている SQL Server プラットフォーム イメージを使用して新しい仮想マシンをプロビジョニングします。SQL Server Data Tools を使用して、データベースの配置パッケージを作成します。そのデータベース パッケージを、仮想マシン内の SQL Server に配置します。データベースの管理、アップグレード、および監視は、SQL Server Management Studio などの従来の管理ツールを使用して行うことができます。

  • 既存のデータベース アプリケーションの場合は、まず、Azure の仮想マシン内の SQL Server に移行するデータベースを特定します。その後、次の 2 つのいずれかを選択できます。

    • System Center 2012 Virtual Machine Manager の物理-バーチャル変換 (P2V) またはバーチャル-バーチャル変換 (V2V) ウィザードを使用して、物理マシンまたは仮想マシンを Hyper-V VHD に変換します。Add-AzureVHD コマンドレットを使用して、Azure ストレージに VHD ファイルをアップロードします。その後、アップロードした VHD を使用して新しい仮想マシンを配置できます。データベースの管理、アップグレード、および監視は、SQL Server Management Studio などの従来の管理ツールを使用して行うことができます。

    • Azure 管理ポータルで、SQL Server プラットフォーム イメージとアプリケーション層のクラウド コンピューティング リソースを使用して新しい仮想マシンをプロビジョニングします。SQL Server Data Tools と SQL Server Management Studio を使用して、データベースの配置パッケージを作成します。Azure SDK と Visual Studio、Java、PHP、または Node.js 用のプラグインを使用して、既存のアプリケーション層を Azure プロジェクトに移行します。アプリケーション層を Azure に配置し、クラウドのデータにアクセスします。

重要な注意事項:また、これら 2 つの SQL オプションの詳細と、選択する際に役立つ最も一般的なビジネスの動機については、「Azure VM 内の Azure SQL データベースと SQL Server の概要」の記事を参照してください。

データベースとデータを Azure の仮想マシン内の SQL Server に移行するときは、次の手順をこの順序で実行します。

  1. DAC、バックアップ、またはデタッチを使用して、オンプレミスでデータベース スキーマとデータ ファイルを準備します。詳細については、この後の「オンプレミスでスキーマとデータを準備して仮想マシン内の SQL Server のインスタンスにアップロードする方法」を参照してください。

  2. 必要に応じて、Azure に送信する前にファイルを圧縮して暗号化します。

  3. データベース スキーマ、データ ファイル、ログ ファイルを Azure に送信します。Add-AzureVHD コマンドレットを使用する場合は、ファイルを仮想ハード ドライブ (VHD) に配置してから、その VHD を Azure にアップロードします。詳細については、この後の「Azure の仮想マシンにデータベース スキーマとデータ ファイルを移動する方法」を参照してください。

  4. 仮想マシン内の SQL Server にデータベース スキーマとデータ ファイルを読み込みます。詳細については、この後の「オンプレミスでスキーマとデータを準備して仮想マシン内の SQL Server のインスタンスにアップロードする方法」を参照してください。

  5. 移行ツールで作成できなかったメタデータを Azure の仮想マシン内の SQL Server で再作成します。

SQL Server 2014 リリース以降は、SQL Server Management Studio の Azure 仮想マシンに SQL Server データベースを配置ウィザードを使用して、データベースをデータベース エンジンのインスタンスから Azure 仮想マシンの SQL Server に配置することもできます。詳細については、「Azure の仮想マシンに SQL Server データベースを配置する」を参照してください。

ここでは、オンプレミスでデータベース スキーマとデータ ファイルを準備する方法について説明します。いくつかのオプションについて、必要に応じて選択することができます。

データ層アプリケーション (DAC) を使用して、オンプレミスから Azure に送信するデータベース スキーマとデータ ファイルを準備できます。

  • .DACPAC ファイル:.dacpac ファイルには、ユーザーのデータベースに関連付けられたすべての SQL Server オブジェクト (テーブル、ビュー、インスタンス オブジェクトなど) の定義が含まれます。DACPAC は、既存のデータベースのアップグレードなど、データベース スキーマのキャプチャと配置に重点を置きます。既存の SQL Server データベースからデータ層アプリケーション (DAC) パッケージを抽出する方法の詳細については、「データベースからの DAC の抽出」を参照してください。

  • .BACPAC file:.bacpac ファイルには、データベース スキーマおよびデータベースに格納されているデータが含まれます。BACPAC は、スキーマおよびデータのキャプチャに重点を置きます。論理的にはデータベース バックアップに相当し、既存のデータベースのアップグレードには使用できません。.bacpac ファイルを作成する方法の詳細については、「データ層アプリケーションのエクスポート」を参照してください。

BACPAC ファイルにデータベースのスキーマとデータをエクスポートできます。その後、スキーマとデータをホスト サーバーの新しいデータベースにインポートできます。これらの機能は、どちらもデータベース管理ツール (Server Management Studio および DACFx API) でサポートされます。詳細については、MSDN ライブラリの「BACPAC ファイルのインポートによる新しいユーザー データベースの作成」および「Microsoft.SqlServer.Dac 名前空間」を参照してください。

注:

  • DAC 操作では、BACPAC ファイルや DACPAC ファイルは自動的に暗号化されません。オンプレミスと Azure の間の通信が安全であることを確認してください。bacpac ファイルや dacpac ファイルが Azure BLOB ストレージまたはオンプレミスのディスク ストレージで変更されない場合は、個別に暗号化して追加の保護を適用することもできます。

  • DAC では、フルテキスト カタログはサポートされません。

  • セキュリティを強化するために、SQL Server 認証のログインは、パスワードなしで DAC パッケージに格納されます。パッケージが配置またはアップグレードされると、ログインは、生成されたパスワードを伴う無効なログインとして作成されます。ログインを有効にするには、ALTER ANY LOGIN 権限を持つユーザーとしてログインし、ALTER LOGIN を使用してログインを有効にします。さらに、新しいパスワードを割り当て、そのパスワードを該当ユーザーに通知します。Windows 認証ログインの場合、ログインのパスワードは SQL Server で管理されていないため、この操作は必要ありません。

SQL Server の別のインスタンスや、別のサーバーにデータベースを移動する場合は、バックアップと復元の操作を使用できます。オンプレミスの SQL Server と仮想マシン内の SQL Server のバージョンが同じであれば、データベース バックアップ ファイルを仮想マシンにコピーし、データベースを復元することができます。詳細については、「SQL Server データベースのバックアップと復元」を参照してください。

注:

  • バックアップと復元の方が DAC よりも高速です。

  • データの圧縮されたバックアップを作成できます。詳細については、「バックアップの圧縮」を参照してください。

  • SQL Server Management Studio のバックアップ ウィザードやサード パーティのツールなど、使い慣れた既存のツールを使用できます。

  • データベースを別のサーバー インスタンスに移動するときは、移動先のサーバー インスタンスの master および msdb で、依存しているエンティティとオブジェクトのすべてのメタデータを再作成する必要があります。詳細については、「データベースを別のサーバー インスタンスで使用できるようにするときのメタデータの管理」を参照してください。

SQL Server の別のインスタンスや、別のサーバーにデータベースを移動する場合は、デタッチとアタッチの操作を使用できます。データ ファイル (.mdf、.ndf) とログ ファイル (.ldf) を仮想マシンのローカル フォルダーにコピーし、データベースをアタッチします。詳細については、「デタッチとアタッチを使用してデータベースを移動する方法」を参照してください。

注:

  • データベースはデタッチすると、SQL Server インスタンスからは削除されますが、データ ファイルおよびトランザクション ログ ファイル内ではそのまま残ります。元のデータベースはオフラインにする必要があります。この方法は、データベースをアップグレードする場合や非常に大規模なデータベースを移動する場合に最適です。

  • 次の条件に 1 つでも該当する場合、データベースをデタッチできません。

    • データベースがレプリケートおよびパブリッシュされている。

    • データベースに、データベース スナップショットが存在する。

    • データベースがデータベース ミラーリング セッションでミラー化される。

    • データベースに問題がある。

    • データベースがシステム データベースである。

  • デタッチの前に完全バックアップを新規に実行して差分バックアップを再開することをお勧めします。

  • データベースのデタッチとアタッチ操作を実行するときに、データ圧縮機能を使用してデータベース内のデータを圧縮し、データベースのサイズを削減することができます。デタッチされたファイルに対してはさらに、別個の圧縮/圧縮解除ツールを利用できます。

  • データベースを別のサーバー インスタンスにアタッチするときは、ユーザーおよびアプリケーションに一貫した使用環境を提供するために、アタッチ先のサーバー インスタンスで、ログインやジョブなどのデータベースのメタデータの一部またはすべてを作成し直す必要が生じる場合があります。詳細については、「データベースを別のサーバー インスタンスで使用できるようにするときのメタデータの管理」を参照してください。

サーバー間でデータベースを移動またはコピーするときに使用できるその他の方法を次に示します。

  • SQL Server Management Studio のデータベース コピー ウィザードを使用すると、サーバー間でデータベースを移動またはコピーしたり、SQL Server データベースを新しいバージョンにアップグレードしたりすることができます。詳細については、「データベース コピー ウィザードの使用」を参照してください。このツールを使って、オンプレミスから Azure にデータベースをコピーする場合、ハイブリッド接続用に Azure 仮想ネットワーク をセットアップする必要があります。

  • SQL Server インポートおよびエクスポート ウィザードを使用すると、データ ソース間でデータをコピーしたり、基本パッケージを構築したりすることができます。このウィザードの詳細については、「SQL Server インポートおよびエクスポート ウィザード」を参照してください。SQL Server インポートおよびエクスポート ウィザードの目的は、変換元から変換先にデータをコピーすることです。また、このウィザードでは、変換先データベースと変換先テーブルも作成できます。ただし、複数のデータベースやテーブルをコピーする場合、または他の種類のデータベース オブジェクトをコピーする場合は、データベース コピー ウィザードを使用してください。SQL Server インポートおよびエクスポート ウィザードを使って、オンプレミスから Azure にデータベースをコピーする場合、ハイブリッド接続用に Azure 仮想ネットワーク をセットアップする必要があります。

  • スクリプトの生成とパブリッシュ ウィザードを使用すると、SQL Server データベース エンジンのインスタンス間でデータベースを転送するスクリプトを作成できます。生成したスクリプトは、データベース エンジンの別のインスタンスで実行できます。また、ウィザードを使用して、Database Publishing Services を使用して作成された Web サービスに、データベースの内容を直接パブリッシュすることもできます。スクリプトの作成は、データベース全体または特定のオブジェクトに限定して行うことができます。詳細については、「スクリプトの生成とパブリッシュ ウィザード」を参照してください。

  • SQL Server 管理オブジェクト (SMO) ライブラリの Transfer クラスを使用できます。詳細については、「データの転送」を参照してください。SMO では、転送元と転送先のデータベースをオンラインのままにすることができ、Azure BLOB ストレージとの間でデータベース ファイルを個別に移動する必要はありません。SMO の欠点は、データベースへのクライアント接続のどちらの側でも TDS を使用するため、大規模なデータ セットの場合に効率が悪いことです。

  • データベース転送タスクを使用すると、2 つの SQL Server インスタンスの間で SQL Server データベースをコピーまたは移動できます。データベースは、オンライン モードまたはオフライン モードで転送できます。オンライン モードでは、データベースがアタッチされたまま、SQL 管理オブジェクト (SMO) を使用して転送され、データベース オブジェクトがコピーされます。オフライン モードでは、データベースがデタッチされた後、データベース ファイルがコピーまたは移動されます。転送が正常に完了した後、データベースが転送先にアタッチされます。

小さいファイル (データベースのバックアップ、BACPAC ファイル、または DACPAC ファイル) は、リモート デスクトップを使用して接続した状態で、コピーと貼り付けを使用して仮想マシンにコピーできます。

大きいファイルを転送する場合は、次のいずれかの方法を使用します。

  • Add-AzureVhd コマンドレットを使用して、Azure に VHD ファイルをアップロードします。VHD ファイルにデータベースを含めることができます。詳細については、「Windows Server オペレーティング システムを格納する仮想ハード ディスクの作成とアップロード」を参照してください。

  • 仮想マシンと同じデータ センターの BLOB ストレージにファイルをアップロードしてから、リモート デスクトップを使用して仮想マシンに接続し、BLOB ストレージからファイルをダウンロードします。詳細については、「クラウド ストレージについて」を参照してください。

  • スキーマとデータ ファイルを仮想マシンの共有フォルダーに直接コピーします。

  • Web ブラウザーを使用してインターネット経由でデータベースをダウンロードします。たとえば、CodePlex から AdventureWorks データベースをダウンロードできます。

次の表に、Azure の仮想マシンにファイルを移動するときに使用できる一般的な転送方法をいくつか示します。各方法の長所と短所も示してあります。

 

転送方法 長所 短所

add-AzureVhd コマンドレットを使用した Azure BLOB ストレージへの VHD のコピー

  • 高速、Azure 向けに最適化されている

  • 不安定な接続に対処できる

  • 転送がセキュリティで保護される

  • Add-AzureVhd はマイクロソフトが提供するコマンドレットです。グラフィカル ユーザー インターフェイスが必要な場合はサード パーティのツールを使用できます。

  • Add-AzureVhd ツールを使用して Azure に VHD をアップロードする場合は、事前に VHD を準備しておく必要があります。また、ポータルで管理証明書を作成してアップロードする必要があります。

  • アップロードした VHD を Azure の仮想マシンにデータ ディスクとしてアタッチする必要があります。

仮想マシンの共有へのファイルのコピー

  • 簡単に使用できる

  • 複数のクライアント ツールを使用できる

  • ファイルが仮想マシンに直接配置される

  • VPN 接続が必要です。

  • 再起動や再開は一部のファイル コピー ツールでしかサポートされません。

仮想マシンで SQL Server を設定、構成、配置する方法の詳細については、「チュートリアル: Azure での SQL Server 仮想マシンのプロビジョニング」を参照してください。このチュートリアルでは、Azure 管理ポータルを使用して、ギャラリーから仮想マシンを選択してインストールする方法について説明しています。また、リモート デスクトップを使用して仮想マシンに接続する方法や、SQL Server Management Studio を使用して仮想マシン内の SQL Server に接続する方法も紹介しています。

詳細については、「Azure の仮想マシンに SQL Server を移行するための準備」および「Azure の仮想マシンへの SQL Server のデプロイ」を参照してください。

関連項目

この情報は役に立ちましたか。
(残り 1500 文字)
フィードバックをいただき、ありがとうございました
表示:
© 2014 Microsoft