適用対象: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 を使用してインポートまたはエクスポート プライベート リンクを構成する
インポートまたはエクスポート プライベート リンクは、Azure portal、PowerShell、または REST API を使って構成できます。
1. Azure portal を使用してインポートまたはエクスポート プライベート リンクを構成する
プライベート リンクのインポートを有効にする
プライベート リンクのインポートを有効にして承認する必要があります。 プライベート リンクの作成は、Azure で自動的に実行されます。
データベースをインポートする先の Azure SQL 論理サーバーの [概要] ページに移動します。 ツール バーの [データベースのインポート] を選びます。
[データベースのインポート] ページで、[プライベートプライベート リンクを使用する] オプションのチェック ボックスをオンにします。
ストレージ アカウント、認証資格情報、データベースの詳細を入力して、[OK] を選びます。
プライベート リンクのエクスポートを有効にする
エクスポート プライベート リンクを有効にして承認する必要があります。 プライベート リンクの作成は、Azure で自動的に実行されます。
- エクスポートする Azure SQL データベースの [概要] ページに移動します。 ツール バーの [エクスポート] を選びます。
- [データベースのエクスポート] ページで、[プライベートプライベート リンクを使用する] オプションのチェック ボックスをオンにします。
- ストレージ アカウント、認証資格情報、データベースの詳細を入力して、[OK] を選びます。
2. Azure SQL 論理サーバーのプライベート リンクを承認する
新しいプライベート エンドポイントは、Private Link Center または Azure SQL Database のユーザーによって承認されている必要があります。または、それぞれの Azure portal の場所で両方のプライベート リンクを個別に承認できます。
オプション 1: Private Link センターでプライベート エンドポイントを承認する
Azure portal で Private Link Center に移動します。 Azure の検索ボックスで、"Private Link" を検索します。 プライベートリンクを選択してください。
Private Link Centerで、[保留中の接続]を選択します。
Import/Export サービスを使用して作成した両方のプライベート エンドポイントを選択します。 [承認] を選択します。
オプション 2: Azure portal でプライベート エンドポイント接続を個別に承認する
データベースがホストされている Azure SQL 論理サーバーに移動します。
セキュリティのリソース メニューで、ネットワークを選択します。
[プライベート アクセス] タブを選択します。
プライベート エンドポイント接続の一覧で、Import/Export サービスを使用して作成したプライベート エンドポイントを選択します。
[承認] を選択します。
BACPAC (
.bacpac
) ファイルが存在する BLOB コンテナーがホストされているストレージ アカウントに移動します。セキュリティとネットワークで、ネットワークを選択します。
プライベート エンドポイント接続 タブを選択します。
一覧で、インポート/エクスポート サービスのプライベート エンドポイントを選択します。
[承認] を選択して、接続を承認します。
3. インポート/エクスポートの状態を確認する
プライベート エンドポイントを承認すると、Azure SQL Server と Azure ストレージ アカウントの両方で、データベースのインポートまたはエクスポート ジョブが開始されます。 それまでは、作業は保留中です。
データベースのインポートまたはエクスポート ジョブの状態は、Azure SQL Server ページの [データ管理] セクションの [インポート/エクスポート履歴] ページで確認できます。
PowerShell を使用してインポートまたはエクスポート プライベート リンクを構成する
PowerShell でプライベート リンクを使用してデータベースをインポートする
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
PowerShell でプライベート リンクを使用してデータベースをエクスポートする
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
REST API を使用してインポートまたはエクスポート プライベート リンクを作成する
インポート ジョブとエクスポート ジョブを実行する既存の 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 を呼び出します。