次の方法で共有


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

適用対象: Azure SQL Database

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

[Azure サービスとリソースに、このサーバーへのアクセスを許可する] 設定は、Azure portal のリソースメニューの [セキュリティ] メニュー内、[ネットワーキング][例外] セクションで確認できます。 詳細については、「Azure SQL データベースおよびネットワークの Access Control」に関するページを参照してください。

Azure portal にサインインする

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

Azure 仮想マシンを作成する

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

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

[Deploy to Azure]\(Azure にデプロイ\) というラベルが付けられたボタンが表示されている画像。

Azure クイック スタート テンプレートを含む詳細については、「単純な Windows VM をデプロイする」を参照してください。

仮想マシンへの接続

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

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

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

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

    RDP のダウンロードが強調表示されている VM に接続している Azure portal のスクリーンショット。

    Note

    VM の接続方法は複数あります。 このチュートリアルではリモート デスクトップ プロトコル (RDP) を使用して VM に接続しますが、Azure Bastion を環境に配置している場合は、Azure Bastion を使用する新しいソリューションも有効です。 SSH を使用して VM に接続することもできます。

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

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

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

  6. メッセージが表示されたら、 [Connect] を選択します。

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

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

SqlPackage をインストールする

最新バージョンの SqlPackage をダウンロードしてインストールします。 詳細については、SqlPackage を参照してください。

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

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

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

    サーバー名が強調表示されている Azure portal のデータベースの概要ページのスクリーンショット。

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

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

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

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

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

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

BACPAC ファイルの作成の詳細と手順については、「BACPAC ファイルへのエクスポート」を参照してください。

ほとんどの運用環境でのスケールとパフォーマンスのために、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 ファイアウォールおよび仮想ネットワークを構成することが必要になる場合があります