共用方式為


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

適用於:Azure SQL 資料庫

本文描述當伺服器上的 [允許 Azure 服務與資源存取此伺服器] 設為 [關閉] 時,該如何匯入或匯出 Azure SQL 資料庫。 此操作說明會使用 Azure 虛擬機器執行 SqlPackage,以執行匯入或匯出作業。

[允許 Azure 服務和資源存取此伺服器] 設定會顯示在 [例外] 章節 [網络] 區段中 [安全性] 功能表下的 [Azure 入口網站]。 如需詳細設定資訊,請參閱 Azure SQL 資料庫和網路存取控制

登入 Azure 入口網站

登入 Azure 入口網站

建立 Azure 虛擬機器

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

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

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

如需包括 Azure 快速入門範本的詳細資訊,請參閱 部署簡單的 Windows VM

連接至虛擬機器

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

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

  2. 選取 [連接]

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

    Azure 入口網站的螢幕擷取畫面,連線到 VM,並醒目提示下載 RDP。

    注意

    VM 的連線方法有很多種。 本教學課程會使用遠端桌面通訊協定 (RDP) 連線到 VM,但使用 Azure Bastion 的較新解決方案是一種在環境中部署 Bastion 時運作良好的另類方案。 您也可以使用 SSH 來連線到您的 VM

  3. 選取 [下載 RDP 檔案]

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

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

  6. 出現提示時,請選取 [連接]

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

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

安裝 SqlPackage

下載並安裝最新版的 SqlPackage。 如需詳細資訊,請參閱 SqlPackage

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

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

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

    Azure 入口網站資料庫概觀頁面的螢幕擷取畫面,其中已醒目提示伺服器名稱。

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

  3. 在工具列上選取 設定伺服器防火牆

  4. [網路] 頁面上的 [公用存取] 索引卷標的 [防火牆設定] 區段中,選取 [新增用戶端 IPv4 定址]。 此操作將虛擬機器的公用 IP 位址新增至新伺服器層級 IP 防火牆規則中。 伺服器層級 IP 防火牆規則可以針對單一 IP 位址或 IP 位址範圍開啟連接埠 1433。

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

使用 SqlPackage 匯出資料庫

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

如需建立 BACPAC 檔案的詳細資訊和步驟,請參閱 匯出至 BACPAC 檔案

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

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

SqlPackage /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 資料庫\(英文\)。

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

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

重要

若要連線至公司防火牆後方的 Azure SQL 資料庫,防火牆必須開啟連接埠 1433。

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

SqlPackage /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 儲存體防火牆和虛擬網路