共用方式為


使用私人連結匯入或匯出 Azure SQL 資料庫

適用於:Azure SQL 資料庫

本文說明如何使用 Private Link 搭配 Azure 入口網站或 Azure PowerShell 匯入或匯出 Azure SQL 資料庫。 在 Azure SQL 邏輯伺服器上將 [允許存取 Azure 服務] 設定為 [關閉]。

藉由使用 Private Link,您可以安全地執行匯入和匯出作業,而不需要將 [允許存取 Azure 服務] 設定為 [ 開啟],否則標準匯入和匯出作業就需要這樣做。

注意

使用 Azure SQL 資料庫的私人連結匯入和匯出目前處於預覽狀態。

先決條件

搭配 Private Link 使用匯入和匯出之前,請確定您擁有下列資源和設定:

  • 具有私人端點連線設定至虛擬網路的 Azure SQL 邏輯伺服器
  • 具有 Blob 容器的 Azure 儲存體帳戶,其中包含 BACPAC 檔案 (用於匯入) 或儲存匯出的 BACPAC 檔案
  • Azure SQL 邏輯伺服器和儲存體帳戶必須在相同或對等互連的虛擬網路內設定私人端點
  • 核准 Azure SQL 邏輯伺服器和儲存體帳戶上私人端點連線的適當許可權

資料庫匯入/導出私人連結是由Microsoft所建立的服務受控私人端點。 當您在匯入或匯出期間啟用 [ 使用私人連結 ] 選項時,服務會自動建立私人端點,以協助資料庫匯入/匯出程式、Azure SQL 資料庫和 Azure 儲存體服務之間的安全通訊。

這些服務受控私人端點是在現有 Azure SQL 邏輯伺服器私人端點所在的相同虛擬網路和子網路內建立。 端點會從該子網路的位址空間接收專用 IP 位址,而且必須先手動核准,才能繼續匯入/匯出作業。

這很重要

如果您的 Azure SQL 邏輯伺服器或儲存體帳戶已設定私人端點,匯入/匯出服務會特別針對匯入/匯出作業建立 其他 服務管理私人端點。 這些私人端點與您現有的私人端點不同,而且需要個別的核准。

您必須在個別步驟中手動核准 Azure SQL 邏輯伺服器和 Azure Blob 儲存體帳戶的私人端點。 本教學課程包含詳細資料。

匯入匯出私人連結架構的圖表。

您可以透過 Azure 入口網站、PowerShell 或 REST API 設定匯入/匯出 Private Link。

注意

服務會自動在與 Azure SQL 邏輯伺服器現有私人端點相同的虛擬網路和子網路中建立私人端點。 您不需要在匯入/匯出程式期間手動指定虛擬網路或子網路。 如果您的 SQL Server 未設定私人端點,您必須先設定一個端點,才能搭配 Private Link 匯入/匯出。

您必須啟用並核准匯入私人連結。 Azure 會自動建立私人連結。

  1. 移至您要匯入資料庫之 Azure SQL 邏輯伺服器的 [ 概觀 ] 頁面。 從工具列選取 [匯入資料庫]。

  2. 在 [匯入資料庫] 頁面中,選取 [使用 Private Link] 選項核取方塊。

  3. 輸入儲存體帳戶、驗證認證、資料庫詳細資料,然後選取 [確定]。

您必須啟用並核准匯出私人連結。 Azure 會自動建立私人連結。

  1. 移至您要匯出之 Azure SQL 資料庫的 [ 概觀 ] 頁面。 從工具列選取 [匯出]。
  2. 在 [匯出資料庫] 頁面中,選取 [使用 Private Link] 選項核取方塊。
  3. 輸入儲存體帳戶、驗證認證、資料庫詳細資料,然後選取 [確定]。

使用者必須在 Private Link 中心或 Azure SQL 資料庫中核准新的私人端點。 您可以在各自的 Azure 入口網站位置中個別核准這兩個私人連結。

小提示

如果您已針對 Azure SQL 邏輯伺服器和儲存體帳戶設定私人端點,您會看到新的服務受控私人端點會顯示為 擱置中的連線。 這些私人端點是專門用於匯入/匯出作業,而且與您現有的私人端點不同。 請尋找名稱顯示由匯入/匯出服務建立的私有端點。

  1. 流覽至 Azure 入口網站中的 Private Link 中心。 在 [Azure 搜尋] 方塊中,搜尋 [私人連結]。 選取 私密連結

  2. 在 [私用連結中心] 中,選取 [擱置的連線]

  3. 選取您使用 匯入/匯出 服務建立的兩個私人端點。 選取 核准

    Azure 入口網站 Private Link 中心的螢幕擷取畫面,顯示如何核准這兩個私人連結。

選項 2:在 Azure 入口網站中個別核准私人端點連線

  1. 移至裝載資料庫的 Azure SQL 邏輯伺服器。

  2. 在 [安全性] 底下的 [資源] 功能表中,選取 [網络]。

  3. 選取 [私人存取] 索引標籤。

  4. [私人端點連線] 底下的清單中,選取您使用 [匯入/匯出] 服務建立的私人端點。

  5. 選取 核准

    顯示如何核准 Azure SQL Database Private Link 的 Azure 入口網站螢幕擷取畫面。

  6. 移至裝載 BACPAC (.bacpac) 檔案所在 Blob 容器的儲存體帳戶。

  7. [安全性 + 網络] 下,選取 [網络]。

  8. 選取 [私人端點連線] 頁籤

  9. 在清單中,選取匯入/匯出服務的私人端點。

  10. 選取 [核准] 以核准連線。

    顯示如何在 Azure 儲存體中核准 Azure 儲存體 Private Link 的 Azure 入口網站螢幕擷取畫面。

3.檢查匯入/匯出狀態

  1. 核准 Azure SQL Server 和 Azure 儲存體帳戶中的私人端點之後,資料庫匯入或匯出作業就會開始。 在此之前,工作會暫時停止。

  2. 您可以在 [Azure SQL Server] 頁面的 [資料管理] 區段下,檢查 [匯入/匯出記錄] 頁面的資料庫匯入或匯出作業狀態。

    顯示如何檢查 [匯入匯出作業狀態] 的 Azure 入口網站螢幕擷取畫面。

當您使用 PowerShell 時,服務受控私人端點會自動在與 Azure SQL 邏輯伺服器現有私人端點相同的虛擬網路和子網路中建立。 在執行這些命令之前,請確定您的 SQL Server 已設定私人端點連線。

使用 New-AzSqlDatabaseImport Cmdlet,將匯入資料庫要求提交至 Azure。 匯入可能需要一些時間才能完成,視資料庫大小而定。 以 DTU 為基礎的布建模型支援針對每一層選取資料庫大小上限值。 匯入資料庫時,針對 Azure SQL Database使用支援的版本和服務目標值。

在下列 PowerShell 程式碼範例中提供您自己的 <values> 程式碼範例,以匯入名為 sample.bacpac .bacpac 檔案,並建立具有兩個一般用途虛擬核心的 Azure SQL 資料庫。

$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 Cmdlet 將匯出資料庫要求提交至 Azure SQL 資料庫服務。 視資料庫大小而定,匯出作業可能需要一些時間才能完成。

在下列 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 有下列限制:

  • 若要搭配匯入/匯出使用 Private Link,使用者資料庫和 Azure 儲存體 Blob 容器必須位於相同類型的 Azure 雲端上。 例如,兩者都必須位於 Azure 商業版中,或兩者都必須位於 Azure Gov 中。 不支援跨雲端類型裝載。

  • 目前不支援使用 PowerShell 從 Azure SQL 受控執行個體 匯入或匯出資料庫。

  • 當使用者資料庫或 Azure 儲存體帳戶受到資源鎖定保護時,請勿使用匯入/匯出私人連結。

  • 您必須手動核准新的私人端點連線,才能完成匯出作業。 開始匯出之後,請移至 Private Link Center 中的 擱置連線,並核准連線,這些連線可能需要幾分鐘的時間才會出現。

  • 使用 Private Link 匯入時,不支援在建立新資料庫時指定備份儲存體備援,而會自動以預設的異地備援備份儲存體備援進行建立。 因應措施是先使用 Azure 入口網站 或 PowerShell 建立具有所需備份儲存體備援的空白資料庫,然後將 BACPAC 檔案匯入此空白資料庫。

  • 使用 REST API 搭配 Private Link 的匯入只能對現有資料庫進行,因為 API 使用資料庫延伸模組。 因應措施是建立具有所需名稱的空白資料庫,然後使用 Private Link 呼叫匯入 REST API。