プライベート リンクを使用して Azure SQL データベースをインポートまたはエクスポートする

適用対象: Azure SQL データベース

この記事では、Azure SQL 論理サーバー[Azure サービスへのアクセスを許可する][オフ] に設定したままで、Azure portal または Azure PowerShell を使用することで、プライベート リンク を用いた Azure SQL データベースをインポートまたはエクスポートする方法について説明します。

インポートまたはエクスポートを実行するには、[Azure サービスへのアクセスを許可する] を [オン] に設定する必要があります。そうしないと、インポートまたはエクスポート操作はエラーで失敗します。 多くの場合、ユーザーは、すべての Azure サービスにアクセスする必要なしに、プライベート エンド ポイントを使ってインポートまたはエクスポートを実行することを望みます。

注意

プライベート リンクを使用した Azure SQL Database のインポートまたはエクスポートは、現在プレビュー中です。

データベースのインポートまたはエクスポート プライベート リンクは、Microsoft によって作成されるサービス マネージド プライベート エンドポイントであり、データベースのインポートまたはエクスポート プロセス、Azure SQL データベース、関連する Azure Storage サービスによるすべての通信にだけ使われます。 サービス マネージド プライベート エンドポイントは、特定の仮想ネットワークおよびサブネット内のプライベート IP アドレスです。

プライベート エンドポイントは、Azure SQL 論理サーバーと Azure Blob Storage の両方で、別々の手順により、手動で承認される必要があります。詳しくは、このチュートリアルを参照してください。

インポートまたはエクスポート プライベート リンク アーキテクチャのスクリーンショット。

インポートまたはエクスポート プライベート リンクは、Azure portal、PowerShell、または REST API を使って構成できます。

  1. データベースをインポートする先の Azure SQL 論理サーバーの [概要] ページに移動します。 ツール バーの [データベースのインポート] を選びます。
  2. [データベースのインポート] ページで、[プライベートプライベート リンクを使用する] オプションのチェック ボックスをオンにします。 インポート プライベート リンクを有効にする方法を示す Azure portal のスクリーンショット。
  3. ストレージ アカウント、認証資格情報、データベースの詳細を入力して、[OK] を選びます。
  1. エクスポートする Azure SQL データベースの [概要] ページに移動します。 ツール バーの [エクスポート] を選びます。
  2. [データベースのエクスポート] ページで、[プライベートプライベート リンクを使用する] オプションのチェック ボックスをオンにします。 エクスポート プライベート リンクを有効にする方法を示す Azure portal のスクリーンショット。
  3. ストレージ アカウント、認証資格情報、データベースの詳細を入力して、[OK] を選びます。

新しいプライベート エンドポイントは、Private Link センターまたは Azure SQL データベースのユーザーによって承認される必要があります。

  1. Azure portal で Private Link センターに移動します。 Azure の検索ボックスで、"Private Link" を検索します。
  2. Private Link センターの [プライベート エンドポイント] ページに移動します。
  3. Import/Export サービスを使用して作成したプライベート エンドポイントを承認します。

オプション 2: Azure portal の Azure SQL データベースでプライベート エンド ポイント接続を承認する

  1. データベースがホストされている Azure SQL 論理サーバーに移動します。

  2. [セキュリティ] の下の [ネットワーク] ページに移動します

  3. [プライベート アクセス] タブを選択します。

  4. 承認するプライベート エンドポイントを選択します。

  5. [承認] を選択して、接続を承認します。

    Azure SQL Database の Private Link を承認する方法を示す Azure portal のスクリーンショット。

3. Azure Storage でプライベート エンドポイント接続を承認する

Azure Storage でデータベース インポート BACPAC ファイルの新しいプライベート エンドポイント接続を承認します。

  1. BACPAC (.bacpac) ファイルが存在する BLOB コンテナーがホストされているストレージ アカウントに移動します。
  2. [セキュリティ] メニューで [プライベート エンドポイント接続] ページを開きます。
  3. インポート/エクスポート サービス用のプライベート エンドポイントを選びます。
  4. [承認] を選択して、接続を承認します。

Azure Storage での Azure Storage Private Link の承認方法を示す Azure portal のスクリーンショット。

4. インポート/エクスポートの状態を調べる

  1. プライベート エンドポイントを承認すると、Azure SQL Server と Azure ストレージ アカウントの両方で、データベースのインポートまたはエクスポート ジョブが開始されます。 それまで、ジョブは保留されます。
  2. データベースのインポートまたはエクスポート ジョブの状態は、Azure SQL Server ページの [データ管理] セクションの [インポート/エクスポート履歴] ページで確認できます。 インポートまたはエクスポート ジョブの状態の確認方法を示す Azure portal のスクリーンショット。

New-AzSqlDatabaseImport コマンドレットを使用して、Azure にデータベースのインポート要求を送信します。 データベースのサイズによって、インポートが完了するまでに時間がかかる場合があります。 DTU ベースのプロビジョニング モデルでは、レベルごとにデータベースの最大サイズを選択できます。 データベースをインポートする際は、これらのサポートされている値のいずれかを使用してください。

$importRequest = New-AzSqlDatabaseImport -ResourceGroupName "<resourceGroupName>" `
        -ServerName "<serverName>" -DatabaseName "<databaseName>" `
        -DatabaseMaxSizeBytes "<databaseSizeInBytes>" -StorageKeyType "StorageAccessKey" `
        -StorageKey $(Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName `
                        -StorageAccountName "<storageAccountName>").Value[0]
        -StorageUri "https://myStorageAccount.blob.core.windows.net/importsample/sample.bacpac" `
        -Edition "Standard" -ServiceObjectiveName "P6" ` -UseNetworkIsolation $true `
        -StorageAccountResourceIdForPrivateLink "/subscriptions/<subscriptionId>/resourcegroups/<resource_group_name>/providers/Microsoft.Storage/storageAccounts/<storage_account_name>" `
         -SqlServerResourceIdForPrivateLink "/subscriptions/<subscriptionId>/resourceGroups/<resource_group_name>/providers/Microsoft.Sql/servers/<server_name>" `
        -AdministratorLogin "<userID>" `
        -AdministratorLoginPassword $(ConvertTo-SecureString -String "<password>" -AsPlainText -Force)

New-AzSqlDatabaseExport コマンドレットを使用して、Azure SQL Database サービスにデータベース エクスポート要求を送信します。 データベースのサイズに応じて、エクスポート操作の完了に時間がかかる場合があります。

$exportRequest = New-AzSqlDatabaseExport -ResourceGroupName "<resourceGroupName>" `
        -ServerName "<serverName>" -DatabaseName "<databaseName>" `
        -StorageKeyType "StorageAccessKey" `
        -StorageKey $(Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName `
                        -StorageAccountName "<storageAccountName>").Value[0]
        -StorageUri "https://myStorageAccount.blob.core.windows.net/importsample/sample.bacpac" `
        -UseNetworkIsolation $true `
        -StorageAccountResourceIdForPrivateLink "/subscriptions/<subscriptionId>/resourcegroups/<resource_group_name>/providers/Microsoft.Storage/storageAccounts/<storage_account_name>" `
         -SqlServerResourceIdForPrivateLink "/subscriptions/<subscriptionId>/resourceGroups/<resource_group_name>/providers/Microsoft.Sql/servers/<server_name>" `
        -AdministratorLogin "<userID>" `
        -AdministratorLoginPassword $(ConvertTo-SecureString -String "<password>" -AsPlainText -Force)

Import ジョブと Export ジョブを実行するための既存の API が、Private Link をサポートするように強化されています。 データベース API のインポートに関するページを参照してください。

制限事項

現在、インポートまたはエクスポート用のプライベート リンクには次の制限があります。

  • インポートまたはエクスポートで Private Link を使うには、ユーザー データベースと Azure Storage BLOB コンテナーが同じ種類の Azure Cloud でホストされている必要があります。 たとえば、両方を Azure Commercial で、または両方を Azure Gov でホストします。 数種類のクラウド間でのホスティングはサポートされていません。

  • PowerShell を使用した Azure SQL Managed Instance からのデータベースのインポートまたはエクスポートは、現在はサポートされていません。

  • ユーザー データベースまたは Azure ストレージ アカウントがリソース ロックによって保護されている場合は、インポートまたはエクスポート Private Link を使わないでください。

  • エクスポート操作を完了するには、新しいプライベート エンドポイント接続を手動で承認する必要があります。 エクスポートを開始した後、Private Link センターで "保留中の接続" に移動し、接続を承認します。表示されるまで数分かかる場合があります。

  • Private Link を使用したインポートでは、新しいデータベースの作成時にバックアップ ストレージの冗長性の指定はサポートされておらず、バックアップ ストレージの冗長性として既定の geo 冗長を使用して作成されます。 回避策としては、最初に Azure portal または PowerShell を使って必要なバックアップ ストレージの冗長性を備えた空のデータベースを作成した後、BACPAC ファイルをこの空のデータベースにインポートします。

  • REST API とプライベート リンクを使用したインポートは、API でデータベース拡張機能が使われるため、既存のデータベースでのみ完了できます。 回避策としては、目的の名前で空のデータベースを作成した後、プライベート リンクで Import REST API を呼び出します。