共用方式為


使用 Private Link 匯入或匯出 Azure SQL 資料庫

適用於:Azure SQL 資料庫

本文說明如何藉由 Azure 入口網站或 Azure PowerShell 來使用私人連結匯入或匯出 Azure SQL 資料庫,並在 Azure SQL 邏輯伺服器上將允許存取 Azure 服務設為關閉

執行匯入或匯出時,您必須將 [允許存取 Azure 服務] 設定為 [ON],否則匯入或匯出作業會失敗併發生錯誤。

注意

針對 Azure SQL 資料庫使用 Private Link 的匯入/匯出目前為預覽狀態。

資料庫匯入/導出私人連結是由Microsoft所建立的服務受控私人端點。 啟用時,私有連結會專門用於資料庫匯入/匯出過程、Azure SQL 資料庫和相關的 Azure 儲存體服務之間的所有通信。 服務管理的私人端點,是特定虛擬網路和子網路內的私人 IP 位址。

私人端點必須在不同步驟中,對 Azure SQL 邏輯伺服器和 Azure Blob 儲存帳戶進行手動核准,詳細資訊包含在本教學課程中。

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

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

您必須啟用並核准匯入私人連結。 建立私人鏈接會自動在 Azure 中執行。

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

您必須啟用並核准匯出私人連結。 建立私人鏈接會自動在 Azure 中執行。

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

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

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

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

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

    Azure 入口網站私人連結中心的螢幕快照,其中顯示如何核准這兩個私人連結。

選項 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 伺服器和 Azure 儲存體帳戶中啟動資料庫匯入或匯出作業。 在此之前,工作會暫時停止。
  2. 您可以在 [Azure SQL Server] 頁面的 [資料管理] 區段下,檢查 [匯入/匯出記錄] 頁面的資料庫匯入或匯出作業狀態。 顯示如何檢查 [匯入匯出作業狀態] 的 Azure 入口網站螢幕擷取畫面。

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

在下列 PowerShell 程式代碼範例中提供您自己的 <values>,此範例會匯入名為 sample.bacpac 的 .bacpac 檔案,並建立具有 2 個一般用途虛擬核心的 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 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 Commercial 中,就是同時位於 Azure Gov 中。 不支援跨雲端類型裝載。

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

  • 當使用者資料庫或 Azure 儲存體帳戶受到資源鎖定保護時,不應使用匯入/匯出 Private Link。

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

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

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