共用方式為


教學課程:使用 DMS 將 SQL Server 移轉至 Azure SQL 受控執行個體

您可以使用 Azure Data Studio 中的 Azure 資料移轉服務 (DMS) 和 Azure SQL 移轉延伸模組,將資料庫從 SQL Server 實例移轉至 Azure SQL 受控執行個體,並縮短停機時間。

如需可能需要一些手動設定的資料庫移轉方法,請參閱移轉指南:SQL Server 至 Azure SQL 受控執行個體

提示

在 Azure 資料庫移轉服務中,您可在離線或線上時移轉資料庫。 在離線移轉中,當移轉開始時,應用程式即會開始停機。 若要將停機限制於在移轉後完全移轉至新環境所需的時間,請使用線上移轉。 建議您測試離線移轉,以決定停機是否在可接受範圍。 如果無法接受預期的停機,則請執行線上移轉。

在本教學課程中,使用 Azure Data Studio 和資料庫移轉服務 (DMS),將 AdventureWorks2022 資料庫從內部部署 SQL Server 執行個體移轉至 Azure SQL 受控執行個體的執行個體。 本教學課程使用線上移轉模式,其中應用程式停機僅限於移轉結束時的短暫完全移轉。

在本教學課程中,您會了解如何:

  • 啟動 Azure Data Studio 中的移轉至 Azure SQL 精靈
  • 執行來源 SQL Server 資料庫的評量
  • 從來源 SQL Server 執行個體收集效能資料
  • 取得最適合您工作負載的 Azure SQL 受控執行個體 SKU 建議
  • 指定來源 SQL Server 執行個體、備份位置和 Azure SQL 受控執行個體的目標執行個體詳細資料
  • 建立新的 Azure 資料庫移轉服務,並安裝自我裝載整合執行階段以存取來源伺服器和備份
  • 開始並監視移轉的進度
  • 在您準備好時執行完全移轉

重要

準備進行移轉並盡可能縮短線上移轉程序的持續時間,以將執行個體重新設定或計劃性維護所造成的中斷風險降到最低。 如果發生這類事件,則移轉程序會從頭開始。 如果是計劃性維護,則會在重新開始移轉程序之前保留目標 Azure SQL 受控執行個體設定或維護的寬限期為 36 小時。

必要條件

若要完成本教學課程,您需要:

  • 下載並安裝 Azure Data Studio

  • 從 Azure Data Studio Marketplace 中安裝適用於 Azure Data Studio 的 Azure SQL 移轉延伸模組

  • 擁有指派給下列其中一個內建角色的 Azure 帳戶:

    • Azure SQL 受控執行個體 目標實例的參與者,以及您從伺服器消息塊 (SMB) 網路共用上傳資料庫備份文件的記憶體帳戶,以及包含 Azure SQL 受控執行個體 或 Azure 記憶體帳戶目標實例之 Azure 資源群組的讀取者角色。

    • Azure 訂用帳戶的擁有者參與者角色(如果您建立新的 資料移轉服務 實例,則為必要角色)。

    除了使用這些其中一個內建角色,您也可以指派自訂角色

    重要

    只有在您設定移轉步驟時,才需要 Azure 帳戶。 評估或在 Azure Data Studio 的移轉精靈中檢視 Azure 建議時不需要 Azure 帳戶。

  • 建立 Azure SQL 受控執行個體的目標執行個體。

  • 確定用來連線來源 SQL Server 的登入是 sysadmin 伺服器角色的成員,或擁有 CONTROL SERVER 權限。

  • 提供 SMB 網路共用、Azure 儲存體帳戶檔案共用或 Azure 儲存體帳戶 Blob 容器,其中包含完整的資料庫備份檔案和後續交易記錄備份檔案。 資料庫移轉服務在資料庫移轉期間會使用備份位置。

    • 適用於 Azure Data Studio 的 Azure SQL 移轉延伸模組不會進行資料庫備份,也不會代表您起始任何資料庫備份。 相反地,該服務會使用現有的資料庫備份檔案來進行移轉。

    • 如果您的資料庫備份檔案是在 SMB 網路共用中提供,則請建立 Azure 儲存體帳戶,允許 DMS 服務上傳資料庫備份檔案並移轉資料庫。 確定您在建立資料庫移轉服務執行個體的同一區域中建立 Azure 儲存體帳戶。

    • 您可以將每個備份寫入至個別的備份檔或寫入至多個備份檔。 不支援將多個備份 (例如完整和交易記錄) 附加至單一備份媒體。

    • 您可以提供壓縮的備份,以降低遇到與移轉大型備份相關的潛在問題的可能性。

  • 請確定執行來源 SQL Server 執行個體的服務帳戶具有 SMB 網路共用 (其中包含資料庫備份檔案) 的讀取和寫入權限。

  • 如果您要移轉受「透明資料加密」(TDE) 保護的資料庫,則您必須先將來源 SQL Server 執行個體中的憑證移轉至 Azure SQL 目標,才能還原資料庫。 如需移轉已啟用 TDE 的資料庫的詳細資訊,請參閱教學課程:在 Azure Data Studio 中將已啟用 TDE 的資料庫移轉至 Azure SQL (預覽)

    如果您的資料庫包含受 Always Encrypted 保護的機密資料,則移轉程序會自動將您的 Always Encrypted 金鑰移轉至 Azure SQL 目標。

  • 如果您的資料庫備份位於網路檔案共用中,請提供一台電腦來安裝自我裝載的整合執行階段,以用於存取及移轉資料庫備份。 移轉精靈會為您提供下載連結和驗證金鑰,以下載並安裝您的自我裝載整合執行階段。

    準備移轉時,請確定您要安裝自我裝載整合執行階段的電腦上,已啟用下列輸出防火牆規則和網域名稱:

    網域名稱 輸出連接埠 描述
    公有雲:{datafactory}.{region}.datafactory.azure.net
    *.frontend.clouddatahub.net

    Azure Government:{datafactory}.{region}.datafactory.azure.us

    由 21Vianet 營運的 Microsoft Azure:{datafactory}.{region}.datafactory.azure.cn
    443 必須提供此資訊,自我裝載整合執行階段才能連線到資料移轉服務。

    針對在公有雲中新建立的資料處理站,請從自我裝載的整合執行階段金鑰中找出 {datafactory}.{region}.datafactory.azure.net 格式的完整網域名稱 (FQDN)。

    針對現有的資料處理站,如果您未在自我裝載的整合金鑰中看到 FQDN,請改用 *.frontend.clouddatahub.net
    download.microsoft.com 443 自我裝載整合執行階段所需,以用於下載更新。 如果您已停用自動更新,則可以跳過設定此網域。
    .core.windows.net 443 供連線到 Azure 儲存體帳戶的自我裝載整合執行階段用來從網路共用上傳資料庫備份。

    提示

    如果已在 Azure 儲存體帳戶中提供您的資料庫備份檔案,則移轉程序進行期間不需要自我裝載的整合執行階段。

  • 如果您使用自我裝載的整合執行階段,請確定安裝該執行階段的電腦可以連線到來源 SQL Server 執行個體,以及備份檔所在的網路檔案共用。

  • 啟用輸出埠 445 以允許存取網路檔案共用。 如需詳細資訊,請參閱使用自我裝載整合執行階段的建議

  • 如果您第一次使用資料移轉服務,則請確定 Microsoft.DataMigration 資源提供者已在您的訂閱中註冊。 依照註冊資源提供者的步驟操作。

啟動 Azure Data Studio 中的移轉至 Azure SQL 精靈

若要開啟 [移轉至 Azure SQL 精靈]:

  1. 在 Azure Data Studio 中,移至 [連線]。 選取並連線至 SQL Server 的內部部署執行個體。 您也可以連線至 Azure 虛擬機器上的 SQL Server。

  2. 以滑鼠右鍵按一下伺服器連線,然後選取 [管理]

  3. 在伺服器功能表中的 [一般] 下,選取[Azure SQL 移轉]

  4. 在 [Azure SQL 移轉] 儀表板中,選取 [移轉至 Azure SQL] 以開啟移轉精靈。

    啟動 [移轉至 Azure SQL] 精靈的螢幕擷取畫面。

  5. 在精靈的第一個頁面上,啟動新的工作階段或繼續先前儲存的工作階段。

執行資料庫評量、收集效能資料,以及取得 Azure 建議

  1. 選取要執行評量的資料庫,然後選取 [下一步]

  2. 選取 [Azure SQL 受控執行個體] 作為目標。

    評定確認的螢幕擷取畫面。

  3. 選取 [檢視/選取] 以檢視評量結果。

  4. 在評量結果中,選取資料庫,然後檢閱評量報告,以確定找不到任何問題。

    資料庫評定詳細資料的螢幕擷取畫面。

    1. 選取 [取得 Azure 建議] 以開啟 [建議] 窗格。

    2. 選取 [立即收集效能資料]。 選取本機電腦上的資料夾以儲存效能記錄,然後選取 [開始]

      Azure Data Studio 現在會收集效能資料,直到您停止收集為止,請按精靈中的 [下一步] 按鈕,或關閉 Azure Data Studio。

      大約 10 分鐘之後,Azure Data Studio 會指出可用於 Azure SQL 受控執行個體的建議。 您也可以在初始 10 分鐘後按 [重新整理建議] 連結,以使用收集到的額外資料重新整理並定義建議。 如果您的使用模式隨著時間而有所不同,延伸評量會特別有用。

    3. 在選取的 [Azure SQL 受控執行個體] 目標中,選取 [檢視詳細資料] 以開啟詳細的 SKU 建議報告。

    4. 在 [檢閱 Azure SQL 受控執行個體建議] 中,檢閱建議。 若要儲存建議的複本,請選取 [儲存建議報告] 核取方塊。

  5. 選取 [關閉] 以關閉 [建議] 窗格。

  6. 選取 [下一步] 以繼續精靈中的資料庫移轉。

進行移轉設定

  1. 從對應的下拉式清單中選取您的訂用帳戶、位置、資源群組,然後選取 [下一步],以指定您的 Azure SQL 受控執行個體

  2. 選取 [線上移轉] 作為移轉模式。

    注意

    在線上移轉模式中,來源 SQL Server 資料庫可用於讀取和寫入活動,而資料庫備份會在目標 Azure SQL 受控執行個體上持續還原。 應用程式停機只會發生於移轉結束時的完全移轉期間。

  3. 選取資料庫備份的位置。 您的資料庫備份可以位於內部部署的網路共用,或位於 Azure 儲存體 Blob 容器中。

    注意

    如果您的資料庫備份是在內部部署網路共用中提供,DMS 會要求您在精靈的下一個步驟中設定自我裝載整合執行階段。 如果需要自我裝載整合執行階段才能存取來源資料庫備份,請檢查備份組的有效性,並將其上傳至您的 Azure 儲存體帳戶。 如果您的資料庫備份已位於 Azure 儲存體 Blob 容器上,您就不需要設定自我裝載整合執行階段。

針對位於網路共用的備份,請輸入或選取下列資訊:

欄位 描述
來源認證 - 使用者名稱 用來連線至來源 SQL Server 執行個體,並驗證備份檔案的認證 (Windows/SQL 驗證)。
來源認證 - 密碼 用來連線至來源 SQL Server 執行個體,並驗證備份檔案的認證 (Windows/SQL 驗證)。
包含備份的網路共用位置 包含完整和交易記錄備份檔案的網路共用位置。 移轉程序期間,不會自動忽略不屬於有效備份組之網路共用中的任何無效檔案或備份檔案。
具有網路共用位置讀取存取權的 Windows 使用者帳戶 具有網路共用讀取權限的以擷取備份檔案的 Windows 認證 (使用者名稱)。
密碼 具有網路共用讀取權限的以擷取備份檔案的 Windows 認證 (密碼)。
目標資料庫名稱 您可以在移轉程序期間修改目標資料庫名稱。
儲存體帳戶詳細資料 上傳備份檔案所在的資源群組和儲存體帳戶。 您不需要建立容器。 DMS 會在上傳程式期間,自動在指定的儲存體帳戶中建立 Blob 容器。

針對儲存在 Azure 儲存體 Blob 容器中的備份,請輸入或選取下列資訊:

欄位 描述
目標資料庫名稱 如果您想要在移轉程序期間變更目標上的資料庫名稱,則可以修改目標資料庫名稱。
儲存體帳戶詳細資料 備份檔案所在的資源群組、儲存體帳戶和容器。

重要

如果已啟用回送檢查功能,而且來源 SQL Server 和檔案共用位於相同的電腦上,則來源將無法使用 FQDN 存取檔案共用。 若要修正此問題,請使用此處的指示來停用回送檢查功能

適用於 Azure Data Studio 的 Azure SQL 移轉延伸模組不再需要 Azure 儲存體帳戶網路設定上的特定設定,以將 SQL Server 資料庫移轉至 Azure。 不過,視您的資料庫備份位置和所需的儲存體帳戶網路設定而定,有一些步驟可確保您的資源可以存取 Azure 儲存器帳戶。 如需各種移轉案例和網路組態,請參閱下表:

案例 SMB 網路共用 Azure 儲存體帳戶容器
從所有網路啟用 沒有額外的步驟 沒有額外的步驟
已從選取的虛擬網路和 IP 位址啟用 請參閱 1a 請參閱 2a
已從選取的虛擬網路和 IP 位址 + 私人端點啟用 請參閱 1b 請參閱 2b

1a - Azure Blob 儲存體網路設定

如果您在 Azure VM 上安裝自我裝載整合執行階段 (SHIR),請參閱第 1b 節 - Azure Blob 儲存體網路設定。 如果您的內部部署網路上已安裝自我裝載整合執行階段 (SHIR),您必須在 Azure 儲存體帳戶中新增裝載電腦的用戶端 IP 位址,以便:

顯示儲存體帳戶網路詳細資料的螢幕擷取畫面。

若要套用此特定設定,請從 SHIR 機器連線至 Azure 入口網站、開啟 Azure 儲存體帳戶設定,選取 [網路],然後標示 [新增用戶端 IP 位址] 核取方塊。 選取 [儲存] 以變更持續性。 如需其餘步驟,請參閱第 2a 節 - Azure Blob 儲存體網路設定 (私人端點)

1b - Azure Blob 儲存體網路設定

如果您的 SHIR 裝載在 Azure VM 上,則必須將 VM 的虛擬網路新增至 Azure 儲存體帳戶,因為 VM 有無法新增至 IP 位址範圍區段的非公用 IP 位址。

顯示儲存體帳戶網路防火牆設定的螢幕擷取畫面。

若要套用此特定組態,請找到您的 Azure 儲存體帳戶,接著從 [資料儲存體] 面板選取 [網路],然後勾選 [新增現有的虛擬網路] 核取方塊。 隨即開啟新的面板。 選取裝載整合執行階段之 Azure VM 的訂用帳戶、虛擬網路和子網路。 您可以在 Azure VM 的 [概觀] 頁面上找到此資訊。 如果需要服務端點,則請選取 [啟用]。 一旦一切準備就緒,請儲存更新。 如需其餘必要步驟,請參閱第 2a 節 - Azure Blob 儲存體網路設定 (私人端點)

2a - Azure Blob 儲存體網路設定 (私人端點)

如果您的備份直接放在 Azure 儲存體容器中,則不需要上述所有步驟,因為沒有與 Azure 儲存體帳戶通訊的整合執行階段。 不過,我們仍然需要確保目標 SQL Server 執行個體可以與 Azure 儲存體帳戶通訊,以從容器還原備份。 若要套用此特定設定,請遵循第 1b 節 - Azure Blob 儲存體網路設定中的指示,在填寫 [新增現有虛擬網路] 快顯視窗時指定目標 SQL 執行個體虛擬網路。

2b - Azure Blob 儲存體網路設定 (私人端點)

如果您已在 Azure 儲存體帳戶上設定私人端點,則請遵循第 2a 節 - Azure Blob 儲存體網路設定 (私人端點) 中所述的步驟。 不過,您必須選取私人端點的子網路,而不只是目標 SQL Server 子網路。 請確定私人端點裝載於與目標 SQL Server 執行個體相同的 VNet 中。 如果不是,請使用〈Azure 儲存體帳戶設定〉一節中的程序來建立另一個私人端點。

建立資料庫移轉服務執行個體

建立新的 Azure 資料庫移轉服務,或重複使用您先前建立的現有服務。

如果您先前已使用 Azure 入口網站建立資料庫移轉服務執行個體,則無法在 Azure Data Studio 的移轉精靈中重複使用執行個體。 只有在您使用 Azure Data Studio 建立執行個體時,才能重複使用執行個體。

使用現有的資料庫移轉服務執行個體

若要使用現有的資料庫移轉服務執行個體:

  1. 在 [資源群組] 中,選取包含現有資料庫移轉服務執行個體的資源群組。

  2. Azure 資料庫移轉服務中,選取所選資源群組中現有的資料庫移轉服務執行個體。

  3. 選取 [下一步]。

建立資料庫移轉服務的新執行個體

若要建立資料庫移轉服務的新執行個體:

  1. 在 [資源群組] 中,建立新的資源群組,以包含資料庫移轉服務的新執行個體。

  2. 在 [Azure 資料庫移轉服務] 底下,選取 [新建]

  3. 在 [建立 Azure 資料庫移轉服務] 中,輸入資料庫移轉服務執行個體的名稱,然後選取 [建立]

成功建立 DMS 之後,您將會看到設定整合執行階段的詳細資料。

  1. 選取 [下載並安裝整合執行階段] 連結,以在網頁瀏覽器中開啟下載連結。 下載整合執行階段,然後將其安裝在符合連線至來源 SQL Server 執行個體必要條件的電腦上。

    安裝完成時,Microsoft Integration Runtime Configuration Manager 會自動開啟以開始註冊程序。

  2. 在 [驗證金鑰] 資料表中,複製精靈中提供的其中一個驗證金鑰,並將其貼到 Azure Data Studio 中。 如果驗證金鑰有效,Integration Runtime Configuration Manager 中會出現綠色核取圖示。 綠色核取記號表示您可以繼續註冊

    註冊自我裝載整合執行階段之後,請關閉 Microsoft Integration Runtime Configuration Manager。

    注意

    如需如何使用自我裝載整合執行階段的詳細資訊,請參閱建立和設定自我裝載整合執行階段

  3. 在 Azure Data Studio 中的 [建立 Azure 資料庫移轉服務] 中,選取 [測試連線],以驗證新建立的資料庫移轉服務執行個體是否已連線至新註冊的自我裝載整合執行階段。

    測試連接整合執行階段的螢幕擷取畫面。

  4. 返回 Azure Data Studio 中的移轉精靈。

開始資料庫移轉

檢閱您建立的設定,然後選取 [開始移轉] 以開始資料庫移轉。

監視資料庫移轉

  1. 在 [資料庫移轉狀態] 上,您可以追蹤進行中的移轉、完成的移轉,以及失敗的移轉 (如果有的話)。

    監視移轉儀表板的螢幕擷取畫面。

  2. 選取進行中的資料庫移轉,以檢視作用中的移轉。

    若要取得特定移轉的詳細資訊,請選取資料庫名稱。

    [移轉詳細資料] 窗格會顯示備份檔案及其對應的狀態:

    狀態 描述
    已到達 到達來源備份位置且經過驗證的備份檔案。
    正在上傳 整合執行階段會將備份檔案上傳至 Azure 儲存體帳戶。
    已上傳 備份檔案已上傳至 Azure 儲存體帳戶。
    正在還原 服務正在將備份檔案還原至 Azure SQL 受控執行個體。
    已還原 備份檔案已成功在 Azure SQL 受控執行個體中還原。
    已取消 移轉程序已取消。
    已忽略 備份檔案已忽略,因為它不屬於有效的資料庫備份鏈結。

    備份還原詳細資料的螢幕擷取畫面。

完成完全移轉

本教學課程的最後一個步驟是完成完全移轉,以確保 Azure SQL 受控執行個體中已移轉的資料庫可供使用。 此程序是唯一需要連線資料庫之應用程式的停機,因此必須仔細規劃業務或應用程式專案關係人的完全移轉時間。

若要完成完全移轉:

  1. 停止所有導向來源資料庫的傳入交易。
  2. 進行應用程式組態變更,以指向 Azure SQL 受控執行個體中的目標資料庫。
  3. 針對指定備份位置中的來源資料庫,進行最終記錄備份
  4. 將來源資料庫置於唯讀模式。 因此,使用者可以從資料庫中讀取資料,但無法加以修改。
  5. 請確定所有資料庫備份都具有「監視詳細資料」頁面中的「還原」狀態。
  6. 選取監視詳細資料頁面中的 [完成完全移轉]。

在完全移轉程序期間,移轉狀態會從 [進行中] 變更為 [完成]。 完成完全移轉程序時,移轉狀態會變更為「成功」,表示資料庫移轉成功,且移轉的資料庫已準備好可供使用。

重要

完全移轉之後,具有業務關鍵服務層級 SQL 受控執行個體的可用性,只會比一般用途明顯來得長,因為必須為 Always On 高可用性群組植入三個次要複本。 此作業持續時間取決於資料大小,如需詳細資訊,請參閱管理作業持續時間

限制

重要

使用 Azure SQL 擴充功能的在線移轉會使用與 Log Replay Service (LRS) 相同的技術,而且有相同的限制。 將資料庫移轉至 業務關鍵 服務層級之前,請先考慮這些限制,不適用於一般用途服務層級。

使用適用於 Azure Data Studio 的 Azure SQL 擴充功能來移轉至 Azure SQL 受控執行個體時,會有下列限制:

  • 如果是移轉單一資料庫,則資料庫備份必須放在資料庫資料夾 (包括容器的根資料夾) 內的一般檔案結構中,且資料夾不能是巢狀,因為其不受支援。

  • 如果使用相同的 Azure Blob 儲存體容器來移轉多個資料庫,則您必須將各個資料庫的備份檔案放在容器內的單獨資料夾中。

  • 不支援在目標 Azure SQL 受控執行個體中使用 DMS 來覆寫現有資料庫。

  • DMS 不支援在您的目標上設定高可用性和災害復原以符合來源拓撲。

  • 不支援下列伺服器物件:

    • SQL Server Agent 作業
    • 認證
    • SSIS 套件
    • 伺服器稽核
  • 您無法使用從 Azure Data Factory 建立的現有自我裝載整合執行階段,以使用 DMS 進行資料庫移轉。 一開始,自我裝載整合執行階段應使用 Azure Data Studio 中的 Azure SQL 移轉延伸模組建立,並可重複使用以進行進一步資料庫移轉。

  • 單一 LRS 作業 (DMS 所建立) 最多可以執行 30 天。 此期間到期時,作業會自動取消,因此您的目標資料庫會自動遭到刪除。

  • 如果您要移轉至 業務關鍵性 服務層級中的 SQL 受控實例,請在將資料庫植入次要複本時,考慮將資料庫上線至次要複本時的延遲。 對於較大的資料庫來說,這尤其如此。 如果務必要在切換完成後立即提供資料庫,請考慮下列替代方案:

    1. 先移轉至一般用途服務層級,然後升級至 業務關鍵 服務層級。 升級您的服務層級是一項線上操作,讓您的資料庫保持在線狀態,直到升級作業的最後一步:進行一個短暫的故障排除。

    2. 使用 Managed Instance 連結,進行在線遷移至 Business Critical 實例,而無需等待資料庫在切換後可用。

  • 如果您收到下列錯誤:Memory-optimized filegroup must be empty in order to be restored on General Purpose tier of SQL Database Managed Instance,則此問題是由設計造成的。 Azure SQL 受控執行個體的一般用途層級不支援記憶體內部 OLTP。 若要繼續移轉,其中一種方式是升級至支援記憶體內部 OLTP 的業務關鍵層級。 另一種方式是確定在 Azure SQL 受控執行個體為一般用途時,來源資料庫未使用它。