匯入或匯出 Azure SQL Database,但不允許 Azure 服務存取伺服器

適用于:Azure SQL資料庫

本文描述當伺服器上的 [允許 Azure 服務] 設為 [關閉] 時,該如何匯入或匯出 Azure SQL Database。 此工作流程會使用 Azure 虛擬機器執行 SqlPackage,以執行匯入或匯出作業。

登入 Azure 入口網站

登入 Azure 入口網站

建立 Azure 虛擬機器

選取 [部署至 Azure] 按鈕,以建立 Azure 虛擬機器。

此範本可讓您使用最新的修補版本,利用 Windows 版本幾個不同的選項來部署簡單的 Windows 虛擬機器。 這會將 A2 大小的 VM 部署在資源群組位置,並傳回 VM 的完整網域名稱。

顯示標示為「部署至 Azure」的按鈕影像。

如需詳細資訊,請參閱非常簡單的 Windows VM 部署

連接至虛擬機器

下列步驟示範如何使用遠端桌面連線來連線至虛擬機器。

  1. 部署完成之後,請移至虛擬機器資源。

    此螢幕擷取畫面顯示具有 [連線] 按鈕的虛擬機器 [概觀] 頁面。

  2. 選取 [連接]。

    將顯示遠端桌面通訊協定檔案 (.rdp 檔案) 表單,其中包含虛擬機器的公用 IP 位址與連接埠號碼。

    RDP 表單

  3. 選取 [下載 RDP 檔案]。

    注意

    您也可以使用 SSH 來連線到您的 VM。

  4. 關閉連線至虛擬機器表單。

  5. 若要連線至您的 VM,請開啟下載的 RDP 檔案。

  6. 出現提示時,請選取 [連接]。 在 Mac 上,您需要 RDP 用戶端,例如來自 Mac App Store 的遠端桌面用戶端

  7. 輸入在建立虛擬機器時指定的使用者名稱和密碼,然後選擇 [確定]

  8. 您可能會在登入過程中收到憑證警告。 選擇 [是] 或 [繼續] 以繼續進行連線。

安裝 SqlPackage

下載並安裝最新版的 SqlPackage

如需其他資訊,請參閱 SqlPackage.exe

建立防火牆規則以允許 VM 存取資料庫

將虛擬機器的公用 IP 位址新增至伺服器的防火牆。

下列步驟會為虛擬機器的公用 IP 位址建立伺服器層級的 IP 防火牆規則,並啟用虛擬機器的連線能力。

  1. 從左側功能表中選取 [SQL 資料庫],然後在 [SQL 資料庫] 頁面中選取資料庫。 資料庫的 [概觀] 頁面隨即開啟,顯示完整的伺服器名稱 (例如 servername.database.windows.net),並提供進一步的設定選項。

  2. 請複製此完整伺服器名稱,以供連線到伺服器及其資料庫時使用。

    伺服器名稱

  3. 在工具列上選取 [設定伺服器防火牆]。 伺服器的 [防火牆設定] 頁面隨即開啟。

    伺服器層級 IP 防火牆規則

  4. 選擇工具列上的 [新增用戶端 IP],將虛擬機器的公用 IP 位址新增至新伺服器層級 IP 防火牆規則中。 伺服器層級 IP 防火牆規則可以針對單一 IP 位址或 IP 位址範圍開啟連接埠 1433。

  5. 選取 [儲存]。 系統即會為虛擬機器的公用 IP 位址建立伺服器層級 IP 防火牆規則,以開啟伺服器的連接埠 1433。

  6. 關閉 [防火牆設定] 頁面。

使用 SqlPackage 匯出資料庫

若要使用 SqlPackage 命令列公用程式匯出 Azure SQL Database,請參閱匯出參數和屬性。 SQLPackage 公用程式隨附於最新版的 SQL Server Management StudioSQL Server Data Tools,或者您可以下載最新版的 SqlPackage

在大部分的生產環境中,建議使用 SQLPackage 公用程式以取得縮放性和效能。 如需 SQL Server 客戶諮詢小組部落格中有關使用 BACPAC 檔案進行移轉的主題,請參閱使用 BACPAC 檔案從 SQL Server 移轉至 Azure SQL Database

此範例會說明如何透過 Active Directory 通用驗證使用 SqlPackage.exe 匯出資料庫。 更換成環境的特定值。

SqlPackage.exe /a:Export /tf:testExport.bacpac /scs:"Data Source=<servername>.database.windows.net;Initial Catalog=MyDB;" /ua:True /tid:"apptest.onmicrosoft.com"

使用 SqlPackage 匯入資料庫

若要使用 SqlPackage 命令列公用程式匯入 SQL Server 資料庫,請參閱匯入參數和屬性。 SqlPackage 具有最新的 SQL Server Management StudioSQL Server Data Tools。 您也可以下載最新版的 SqlPackage

為了規模和效能,我們建議在大部分生產環境中使用 SqlPackage,而不使用 Azure 入口網站。 如需 SQL Server 客戶諮詢小組部落格中有關使用 BACPAC 檔案進行移轉的主題,請參閱使用 BACPAC 檔案從 SQL Server 移轉至 Azure SQL Database \(英文\)。

下列 SqlPackage 命令會將 AdventureWorks2017 資料庫從本機儲存體匯入 Azure SQL Database。 此命令會建立名為 myMigratedDatabase、且具有進階服務層級和 P6 服務目標的新資料庫。 請針對您的環境適當變更這些值。

sqlpackage.exe /a:import /tcs:"Data Source=<serverName>.database.windows.net;Initial Catalog=myMigratedDatabase>;User Id=<userId>;Password=<password>" /sf:AdventureWorks2017.bacpac /p:DatabaseEdition=Premium /p:DatabaseServiceObjective=P6

重要

若要從公司的防火牆後方連線到 Azure SQL Database,防火牆必須開啟連接埠 1433。

此範例說明如何使用 SqlPackage 與 Active Directory 通用驗證來匯入資料庫。

sqlpackage.exe /a:Import /sf:testExport.bacpac /tdn:NewDacFX /tsn:apptestserver.database.windows.net /ua:True /tid:"apptest.onmicrosoft.com"

效能考量

匯出速度會因許多因素而不同 (例如,資料圖形),因此無法預測應有的速度。 SqlPackage 可能需要相當長的時間,尤其是處理大型資料庫時。

請嘗試下列策略以獲得最佳效能:

  1. 確定沒有其他工作負載在資料庫上執行。 最好的解決方案是在匯出前先建立複本,以確保未執行任何其他工作負載。
  2. 提高資料庫服務層級目標 (SLO),以更妥善處理匯出工作負載 (主要是讀取 IO)。 如果資料庫目前是 GP_Gen5_4,則業務關鍵層就可以協助處理讀取工作負載。
  3. 確定叢集索引存在,尤其是大型資料表的索引。
  4. 虛擬機器 (VM) 應與資料庫位於同一區域,以利避免網路限制。
  5. VM 應先有足夠大小的 SSD 以產生暫存成品,再上傳到 Blob 儲存體。
  6. VM 應有適合特定資料庫的足夠核心和記憶體設定。

儲存匯入或匯出的 .BACPAC 檔案

.BACPAC 檔案可以儲存在 Azure BlobAzure 檔案儲存體中。

請使用 Azure 檔案儲存體以達到最佳效能。 SqlPackage 會搭配檔案系統作業,以便直接存取 Azure 檔案儲存體。

若要降低成本,請使用 Azure Blob,其花費低於進階版 Azure 檔案共用。 不過,這需要先複製 Blob 和本機檔案系統之間的 .BACPAC 檔案,再執行匯入或匯出作業。 因此,整個程序需要較長的時間。

若要上傳或下載 .BACPAC 檔案,請參閱使用 AzCopy 和 Blob 儲存體傳輸資料使用 AzCopy 和檔案儲存體傳輸資料

視環境而定,您可能需要設定 Azure 儲存體防火牆和虛擬網路

後續步驟