次の方法で共有


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

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

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

インポートまたはエクスポートを実行するには、[ Azure サービスへのアクセスを許可 する] を [オン] に設定する必要があります。それ以外の場合、インポートまたはエクスポート操作はエラーで失敗します。

注意

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

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

プライベート エンドポイントは、Azure SQL 論理サーバーと Azure Blob Storage アカウントの両方について、個別の手順で手動で承認する必要があります。詳細については、このチュートリアルに含まれています。

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

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

プライベート リンクのインポートを有効にして承認する必要があります。 プライベート リンクの作成は、Azure で自動的に実行されます。

  1. データベースをインポートする先の Azure SQL 論理サーバーの [概要] ページに移動します。 ツール バーの [データベースのインポート] を選びます。

  2. [データベースのインポート] ページで、[プライベートプライベート リンクを使用する] オプションのチェック ボックスをオンにします。

  3. ストレージ アカウント、認証資格情報、データベースの詳細を入力して、[OK] を選びます。

エクスポート プライベート リンクを有効にして承認する必要があります。 プライベート リンクの作成は、Azure で自動的に実行されます。

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

新しいプライベート エンドポイントは、Private Link Center または Azure SQL Database のユーザーによって承認されている必要があります。または、それぞれの Azure portal の場所で両方のプライベート リンクを個別に承認できます。

  1. Azure portal で Private Link Center に移動します。 Azure の検索ボックスで、"Private Link" を検索します。 プライベートリンクを選択してください。

  2. Private Link Centerで、[保留中の接続]を選択します。

  3. Import/Export サービスを使用して作成した両方のプライベート エンドポイントを選択します。 [承認] を選択します。

    両方のプライベート リンクを承認する方法を示す Azure portal の Private Link Center のスクリーンショット。

オプション 2: Azure portal でプライベート エンドポイント接続を個別に承認する

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

  2. セキュリティのリソース メニューで、ネットワークを選択します。

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

  4. プライベート エンドポイント接続の一覧で、Import/Export サービスを使用して作成したプライベート エンドポイントを選択します。

  5. [承認] を選択します。

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

  6. BACPAC (.bacpac) ファイルが存在する BLOB コンテナーがホストされているストレージ アカウントに移動します。

  7. セキュリティとネットワークで、ネットワークを選択します。

  8. プライベート エンドポイント接続 タブを選択します。

  9. 一覧で、インポート/エクスポート サービスのプライベート エンドポイントを選択します。

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

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

3. インポート/エクスポートの状態を確認する

  1. プライベート エンドポイントを承認すると、Azure SQL Server と Azure ストレージ アカウントの両方で、データベースのインポートまたはエクスポート ジョブが開始されます。 それまでは、作業は保留中です。

  2. データベースのインポートまたはエクスポート ジョブの状態は、Azure SQL Server ページの [データ管理] セクションの [インポート/エクスポート履歴] ページで確認できます。

    インポートまたはエクスポート ジョブの状態の確認方法を示す Azure portal のスクリーンショット。

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

次の PowerShell コード サンプルで独自の <values> を指定します。このサンプルでは、sample.bacpac という名前の .bacpac ファイルをインポートし、2 つの General Purpose 仮想コアを持つ Azure SQL Database を作成します。

$importRequestParams = @{
   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                                = "GeneralPurpose"
   ServiceObjectiveName                   = "GP_Gen5_2"
   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)
}

$importRequest = New-AzSqlDatabaseImport @importRequestParams

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

次の PowerShell コード サンプルで独自の <values> を指定します。

$exportRequestParams = @{
   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)
}

$exportRequest = New-AzSqlDatabaseExport @exportRequestParams

インポート ジョブとエクスポート ジョブを実行する既存の API では、Private Link がサポートされています。 データベース API のインポートに関するページを参照してください。

制限事項

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

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

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

  • ユーザーデータベースまたは Azure Storage アカウントがリソース ロックによって保護されている場合は、Import/Export Private Link を使用しないでください。

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

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

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