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

適用対象:Azure SQL Database

Azure PowerShell または Azure portal からインポートまたはエクスポートを実行するには、[Azure サービスへのアクセスを許可する] を [オン] に設定する必要があります。そうしないと、インポートまたはエクスポート操作はエラーで失敗します。 多くの場合、ユーザーは、すべての Azure サービスにアクセスする必要なしに、プライベート エンド ポイントを使ってインポートまたはエクスポートを実行することを望みます。 この記事では、Private Link を使用し、Azure SQL 論理サーバー[Azure サービスへのアクセスを許可する][オフ] に設定したままで、Azure SQL データベースをインポートまたはエクスポートする方法について説明します。

注意

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

データベースのインポートまたはエクスポート プライベート リンクは、Microsoft によって作成されるサービス マネージド プライベート エンドポイントであり、データベースのインポートまたはエクスポート プロセス、Azure SQL データベース、関連する Azure Storage サービスによるすべての通信にだけ使われます。 サービス マネージド プライベート エンドポイントは、特定の仮想ネットワークおよびサブネット内のプライベート IP アドレスです。 ユーザーは、サーバーとストレージの両方について、Azure portal でプライベート エンドポイントを手動で承認する必要があります。

Diagram of Import Export Private link architecture.

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

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

2. プライベート エンドポイントを承認する

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

Azure SQL Database でプライベート エンド ポイント接続を承認する

  1. データベースがホストされている Azure SQL 論理サーバーに移動します。
  2. [セキュリティ] の下の [ネットワーク] ページに移動します
  3. [プライベート アクセス] タブを選択します。
  4. 承認するプライベート エンドポイントを選択します。
  5. [承認] を選択して、接続を承認します。

Screenshot from the Azure portal that shows how to approve Azure SQL Database Private Link.

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

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

Screenshot from the Azure portal that shows how to approve Azure Storage Private Link in Azure Storage.

3. インポートまたはエクスポートの状態を調べる

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

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 サービスにデータベース エクスポート要求を送信します。 データベースのサイズに応じて、エクスポート操作の完了に時間がかかる場合があります。

$importRequest = New-AzSqlDatabaseExport -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)

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 を呼び出します。

次の手順