Azure サービスのサーバーへのアクセスを許可せずに Azure SQL Database をインポートまたはエクスポートする

適用対象:Azure SQL Database

この記事では、サーバーで [Azure サービスを許可する][オフ] が設定されている場合に Azure SQL Database をインポートまたはエクスポートする方法について説明します。 このワークフローでは、インポートまたはエクスポート操作を行う SqlPackage を実行するために Azure 仮想マシンを使用します。

Azure portal にサインインする

Azure portal にサインインします。

Azure 仮想マシンを作成する

[Azure へのデプロイ] ボタンを選択して Azure 仮想マシンを作成します。

このテンプレートでは、修正プログラムが適用された最新バージョンを使用して、Windows バージョンのいくつかの異なるオプションを使用して単純な Windows 仮想マシンをデプロイできます。 これにより、A2 サイズの VM がリソース グループの場所にデプロイされ、その VM の完全修飾ドメイン名が返されます。

Image showing a button labeled

詳細については、Windows VM の非常に単純なデプロイに関するページを参照してください。

仮想マシンへの接続

次の手順は、リモート デスクトップ接続を使用して仮想マシンに接続する方法を示しています。

  1. デプロイが完了したら、仮想マシン リソースに移動します。

    Screenshot shows a virtual machine Overview page with a Connect button.

  2. [接続] を選択します。

    リモート デスクトップ プロトコル ファイル (.rdp ファイル) のフォームが表示され、仮想マシンのパブリック IP アドレスとポート番号が示されます。

    Screenshot of Azure portal, connect to VM, with download RDP highlighted.

  3. [RDP ファイルのダウンロード] を選択します。

    Note

    SSH を使用して VM に接続することもできます。

  4. [仮想マシンに接続する] フォームを閉じます。

  5. VM に接続するには、ダウンロードした RDP ファイルを開きます。

  6. メッセージが表示されたら、 [Connect] を選択します。 Mac では、このリモート デスクトップ クライアントのような RDP クライアントを Mac App Store から入手する必要があります。

  7. 仮想マシンの作成時に指定したユーザー名とパスワードを入力し、 [OK] を選択します。

  8. サインイン処理中に証明書の警告が表示される場合があります。 [はい] または [続行] を選択して接続処理を続行します。

SqlPackage をインストールする

最新バージョンの SqlPackage をダウンロードしてインストールします。

詳細については、「SqlPackage」を参照してください。

データベースへの VM アクセスを許可するためのファイアウォール規則を作成する

サーバーのファイアウォールに仮想マシンのパブリック IP アドレスを追加します。

次の手順では、仮想マシンのパブリック IP アドレスのためのサーバー レベルの IP ファイアウォール規則を作成し、仮想マシンからの接続を有効にします。

  1. 左側のメニューから [SQL データベース] を選択し、 [SQL データベース] ページでデータベースを選択します。 データベースの概要ページが開き、完全修飾サーバー名 (servername.database.windows.net など) と、さらに構成するためのオプションが表示されます。

  2. サーバーやそのデータベースに接続するときに使用するために、この完全修飾サーバー名をコピーします。

    Screenshot of the Azure portal, database overview page, with the server name highlighted.

  3. ツール バーで [サーバー ファイアウォールの設定] を選択します。 サーバーの [ファイアウォール設定] ページが開きます。

    Screenshot of the Azure portal, showing the firewall page, with server-level IP firewall rule highlighted.

  4. ツールバーの [クライアント IP の追加] を選択して、サーバー レベルの新しい IP ファイアウォール規則に仮想マシンのパブリック IP アドレスを追加します。 サーバーレベルの IP ファイアウォール規則は、単一の IP アドレスまたは IP アドレスの範囲に対して、ポート 1433 を開くことができます。

  5. [保存] を選択します。 サーバー レベルの IP ファイアウォール規則が、サーバー上のポート 1433 を開いている仮想マシンのパブリック IP アドレスに対して作成されます。

  6. [ファイアウォール設定] ページを閉じます。

SqlPackage を使用してデータベースをエクスポートする

SqlPackage コマンドライン ユーティリティを使用して Azure SQL Database をエクスポートするには、「エクスポートのパラメーターおよびプロパティ」を参照してください。 SqlPackage ユーティリティには、最新バージョンの SQL Server Management StudioSQL Server Data Tools が付属しています。または、最新バージョンの SqlPackage をダウンロードすることもできます。

ほとんどの運用環境でのスケールとパフォーマンスのために、SqlPackage ユーティリティを使用することをお勧めします。 BACPAC ファイルを使用した移行に関する SQL Server Customer Advisory Team のブログについては、「Migrating from SQL Server to Azure SQL Database using BACPAC Files (BACPAC ファイルを使用した SQL Server から Azure SQL Database への移行)」を参照してください。

この例は、SqlPackage と Active Directory ユニバーサル認証を使用してデータベースをエクスポートする方法を示しています。 環境に固有の値に置き換えてください。

SqlPackage /a:Export /tf:testExport.bacpac /scs:"Data Source=<servername>.database.windows.net;Initial Catalog=MyDB;" /ua:True /tid:"apptest.onmicrosoft.com"

SqlPackage を使用してデータベースをインポートする

SqlPackage コマンドライン ユーティリティを使用して SQL Server データベースをインポートするには、「インポート パラメーターとプロパティ」をご覧ください。 SqlPackage には、最新の SQL Server Management StudioSQL Server Data Tools が含まれています。 また、最新バージョンの SqlPackage をダウンロードすることもできます。

スケールとパフォーマンスのために、ほとんどの運用環境では、Azure portal の使用ではなく SqlPackage の使用をお勧めします。 BACPAC ファイルを使用した移行に関する SQL Server Customer Advisory Team のブログについては、「Migrating from SQL Server to Azure SQL Database using BACPAC Files (BACPAC ファイルを使用した SQL Server から Azure SQL Database への移行)」をご覧ください。

次の SqlPackage コマンドにより、ローカル ストレージから AdventureWorks2022 データベースが Azure SQL Database にインポートされます。 Premium サービス レベルと P6 サービス オブジェクトがある myMigratedDatabase という新しいデータベースが作成されます。 これらの値は、お使いの環境に合わせて変更してください。

SqlPackage /a:import /tcs:"Data Source=<serverName>.database.windows.net;Initial Catalog=myMigratedDatabase>;User Id=<userId>;Password=<password>" /sf:AdventureWorks2022.bacpac /p:DatabaseEdition=Premium /p:DatabaseServiceObjective=P6

重要

企業のファイアウォールの外側から Azure SQL Database に接続するには、ファイアウォールのポート 1433 が開いている必要があります。

この例では、SqlPackage と Active Directory ユニバーサル認証を使用してデータベースをインポートする方法を示します。

SqlPackage /a:Import /sf:testExport.bacpac /tdn:NewDacFX /tsn:apptestserver.database.windows.net /ua:True /tid:"apptest.onmicrosoft.com"

パフォーマンスに関する考慮事項

エクスポートの速度は多くの要因 (データ シェープなど) によって異なるため、どのような速度が期待されるかを予測することはできません。 特に大規模なデータベースの場合は、SqlPackage にかなりの時間がかかることがあります。

最高のパフォーマンスを得るために、次の方法を試してみることができます。

  1. データベース上で確実に他のどのワークロードも実行されないようにします。 他のどのワークロードも実行されないようにするには、エクスポートの前のコピーの作成が最適なソリューションである可能性があります。
  2. エクスポート ワークロード (主に読み取り I/O) をより適切に処理するには、データベースのサービス レベル目標 (SLO) を上げます。 現在、データベースが GP_Gen5_4 である場合は、Business Critical レベルが読み取りワークロードに役立つことがあります。
  3. 特に大規模なテーブルに対して、確実にクラスター化インデックスが存在するようにします。
  4. ネットワークの制約を回避できるように、仮想マシン (VM) はデータベースと同じリージョンにある必要があります。
  5. VM には、BLOB ストレージにアップロードする前の一時的な成果物を生成するための十分なサイズを持つ SSD が存在する必要があります。
  6. VM は、特定のデータベースのための十分なコアおよびメモリ構成を備えている必要があります。

インポートまたはエクスポートされた .BACPAC ファイルを格納する

.BACPAC ファイルは、Azure BLOB または Azure Files に格納できます。

最高のパフォーマンスを実現するには、Azure Files を使用します。 SqlPackage はファイル システムで動作するため、Azure Files に直接アクセスできます。

コストを削減するには、Premium Azure ファイル共有よりコストの低い Azure BLOB を使用します。 ただし、それには、インポートまたはエクスポート操作の前に BLOB とローカル ファイル システムの間で .BACPAC ファイルをコピーする必要があります。 その結果、このプロセスにかかる時間は長くなります。

.BACPAC ファイルをアップロードまたはダウンロードするには、「AzCopy と Blob Storage でデータを転送する」および「AzCopy とファイル ストレージでデータを転送する」 を参照してください。

環境によっては、Azure Storage ファイアウォールおよび仮想ネットワークを構成することが必要になる場合があります

次のステップ