教學課程:使用 DMS 在 Azure 虛擬機器上移轉至 SQL Server

您可以使用 Azure Data Studio 中的 Azure 資料庫移轉服務和 Azure SQL 移轉延伸模組,將資料庫從內部部署 SQL Server 執行個體移轉至 Azure 虛擬機器上的 SQL Server (SQL Server 2016 或更新版),並盡可能縮短停機。

如需可能需要一些手動設定的資料庫移轉方法,請參閱 SQL Server 執行個體移轉至 Azure 虛擬機器上的 SQL Server

在本教學課程中,您會使用 Azure Data Studio 搭配 Azure 資料庫移轉服務,將 AdventureWorks2022 資料庫從內部部署 SQL Server 執行個體移轉 至 Azure 虛擬機器上的 SQL Server。

本教學課程提供離線和線上移轉選項,包括移轉程序期間可接受的停機。

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

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

必要條件

開始教學課程之前:

  • 下載及安裝 Azure Data Studio

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

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

    • Azure 虛擬機器上的 SQL Server 目標執行個體的參與者,以及您從伺服器訊息區 (SMB) 網路共用上傳資料庫備份檔的儲存體帳戶的參與者

    • Azure 資源群組 (包含 Azure 虛擬機上的 SQL Server 目標執行個體或您的 Azure 儲存體帳戶的 SQL Server 目標執行個體) 的讀取者角色

    • Azure 訂閱的擁有者或參與者角色

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

    重要

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

  • 建立 Azure 虛擬機上 SQL Server 的目標執行個體。

    重要

    如果您有現有的 Azure 虛擬機器,則應該以完整管理模式的 SQL IaaS 代理程式延伸模組來進行註冊。

  • 確定您用來連接來源 SQL Server 執行個體的登入使用者是 sysadmin 伺服器角色的成員,或其擁有 CONTROL SERVER 授權。

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

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

    • 如果您的資料庫備份檔案位於 SMB 網路共用中,請建立 Azure 儲存體帳戶,資料庫移轉服務可用來將資料庫備份檔案上傳至和移轉資料庫。 確定您在建立資料庫移轉服務執行個體的同一區域中建立 Azure 儲存體帳戶。

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

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

  • 確定執行來源 SQL Server 執行個體的服務帳戶對於包含資料庫備份檔的 SMB 網路共用擁有讀寫權。

  • 如果您要移轉受「透明資料加密」(TDE) 保護的資料庫,則您必須先將來源 SQL Server 執行個體中的憑證移轉至 Azure 虛擬機上的 SQL Server,才能還原資料庫。 若要深入了解,請參閱將受 TDE 保護的資料庫移至另一個 SQL Server

    提示

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

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

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

    網域名稱 輸出連接埠 描述
    公有雲:{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 以允許存取網路檔案共用。 如需詳細資訊,請參閱使用自我裝載整合執行階段的建議

  • 如果您第一次使用 Azure 資料庫移轉服務,則請確定 Microsoft.DataMigration 資源提供者已在您的訂用帳戶註冊

本教學課程說明從 SQL Server 離線移轉至 Azure 虛擬機器上的 SQL Server。

在 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. 在移轉至 Azure SQL 精靈中的步驟 1:用於評量的資料庫中,選取您要評量的資料庫。 然後選取下一步

  2. 在 [步驟 2: 評量結果和建議] 中,完成下列步驟:

    1. 在 [選擇您的 Azure SQL 目標]中,選取 [Azure 虛擬機器上的 SQL Server]

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

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

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

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

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

      Azure Data Studio 會收集效能資料,直到您停止資料收集或關閉 Azure Data Studio 為止。

      10 分鐘之後,Azure Data Studio 會指出可用於 Azure 虛擬機器上的 SQL Server 建議。 產生第一個建議之後,您可以選取 [重新開始資料收集] 以繼續資料收集程序並精簡 SKU 建議。 如果您的使用模式隨著時間而有所不同,延伸評量會特別有用。

    6. 在選取的 [Azure 虛擬機器上的 SQL Server] 目標中,選取 [檢視詳細資料] 以開啟詳細的 SKU 建議報告:

    7. 檢閱 Azure 虛擬機器上的 SQL Server 建議中,檢閱建議。 若要儲存建議的複本,請選取 [儲存建議報告] 核取方塊。

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

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

進行移轉設定

  1. 在移轉至 Azure SQL 精靈中的步驟 3:Azure SQL 目標中,選取您的 Azure 帳戶、Azure 訂用帳戶、Azure 區域或位置,以及包含目標 SQL Server 到 Azure 虛擬機器執行個體的資源群組。 然後選取下一步

  2. 步驟 4:移轉模式中,選取 [離線移轉],然後選取 [下一步]

    注意

    在離線移轉模式中,將資料庫備份檔案還原至 Azure 虛擬機器的 SQL Server 目標執行個體時,來源 SQL Server 資料庫不應用於寫入活動。 應用程式停機會從開始持續到移轉流程完成為止。

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

    注意

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

    如果您的資料庫備份已位於 Azure 儲存體 Blob 容器上,您就不需要設定自我裝載整合執行階段。

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

    名稱 描述
    來源認證 - 使用者名稱 用來連線至來源 SQL Server 執行個體,並驗證備份檔案的認證 (Windows 和 SQL 驗證)。
    來源認證 - 密碼 用來連線至來源 SQL Server 執行個體,並驗證備份檔案的認證 (Windows 和 SQL 驗證)。
    包含備份的網路共用位置 包含完整和交易記錄備份檔案的網路共用位置。 移轉程序期間,不會自動忽略不屬於有效備份組之網路共用中的任何無效檔案或備份檔案。
    具有網路共用位置讀取存取權的 Windows 使用者帳戶 具有網路共用讀取權限的以擷取備份檔案的 Windows 認證 (使用者名稱)。
    密碼 具有網路共用讀取權限的以擷取備份檔案的 Windows 認證 (密碼)。
    目標資料庫名稱 您可以在移轉程序期間修改目標資料庫名稱。
  • 針對儲存在 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 儲存體帳戶,因為虛擬機器有無法新增至 IP 位址範圍區段的非公用 IP 位址。

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

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

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

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

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

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

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

在 [移轉至 Azure SQL 精靈] 中的 [步驟 6: Azure 資料庫移轉服務] 中,建立新的 Azure 資料庫移轉服務執行個體,或重複使用您稍早建立的現有執行個體。

注意

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

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

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

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

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

  3. 選取 [下一步]。

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

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

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

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

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

  4. 在 [設定整合執行階段] 底下,完成下列步驟:

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

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

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

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

      注意

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

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

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

開始資料庫移轉

在 [移轉至 Azure SQL 精靈] 中的 [步驟 7: 摘要] 中,檢閱您建立的設定,然後選取 [開始移轉] 以開始資料庫移轉。

監視資料庫移轉

  1. 在 Azure Data Studio 的 [一般] 下方的伺服器功能表中,選取 [Azure SQL 移轉] 以移至 Azure SQL 移轉的儀表板。

    [資料庫移轉狀態] 下,您可以追蹤進行中、已完成和失敗的移轉 (如果有),也可以檢視所有資料庫移轉。

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

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

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

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

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

在 Azure 虛擬機器上的 SQL Server 上還原所有資料庫備份之後,資料庫移轉服務會起始自動完全移轉,以確保已移轉的資料庫已準備好使用。 移轉狀態會從 [進行中] 變更為 [成功]

限制

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

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

- 不支援使用 Azure 虛擬機器上目標 SQL Server 中的 DMS 來覆寫現有資料庫。

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

不支援下列伺服器物件:

  • SQL Server Agent 作業
  • 認證
  • SSIS 套件
  • 伺服器稽核

- 您無法使用從 Azure Data Factory 建立的現有自我裝載整合執行階段,以使用 DMS 進行資料庫移轉。 一開始,自我裝載整合執行階段應使用 Azure Data Studio 中的 Azure SQL 移轉延伸模組建立,並可重複使用以進行進一步資料庫移轉。

- 移轉至 Azure 虛擬機器上的 SQL Server 時,不支援將使用 SQL Server 2008 和舊版的 VM 作為目標版本。

- 如果您目前使用具有 SQL Server 2012 或 SQL Server 2014 的 VM,您必須將來源資料庫備份檔案儲存在 Azure 儲存體 Blob 容器上,而不是使用網路共用選項。 將備份檔案儲存為分頁 Blob,因為只有 SQL 2016 和更新版本支援區塊 Blob。

- 您必須確定目標 Azure 虛擬機器中的 SQL IaaS 代理程式延伸模組處於完整模式,而不是輕量模式。

- 使用 DMS 移轉至 Azure SQL VM 時,會在內部使用 SQL IaaS 代理程式。 以及 SQL IaaS 代理程式延伸模組僅支援管理預設伺服器執行個體或單一具名執行個體。

- 您可以使用一或多個移轉,將最多 100 個資料庫移轉至與目標相同的 Azure SQL Server 虛擬機器。 此外,一旦具有 100 個資料庫的移轉完成,請等候至少 30 分鐘,再開始將新的移轉至與目標相同的Azure SQL Server 虛擬機器。 另外,每個資料庫的每個移轉作業 (開始移轉、完全移轉) 後續需要幾分鐘的時間。 例如,若要移轉 100 個資料庫,建立移轉佇列大約需要 200 (2 x 100) 分鐘的時間,以及完全移轉所有 100 個資料庫大約需要 100 (1 x 100) 分鐘 (排除備份與還原時間)。 因此,隨著資料庫數目增加,移轉會變慢。 您應事先根據嚴格的移轉測試排程較長的移轉時段,或在移轉至 SQL Server Azure VM 時,將大量資料庫分割成批次。

-除了設定 Azure 儲存體帳戶的網路/防火牆以允許您的 VM 存取備份檔案。 您也需要設定 Azure VM 上 SQL Server 的網路/防火牆,以允許對儲存體帳戶的輸出連線。

-您必須在 SQL 移轉進行時,將 Azure VM 上的目標 SQL Server 保持開啟電源。 此外,在建立新的移轉時,進行容錯移轉或取消移轉。

可能的錯誤訊息

使用者 'NT Service\SQLIaaSExtensionQuery 登入失敗

錯誤Login failed for user 'NT Service\SQLIaaSExtensionQuery

原因:SQL Server 執行個體處於單一使用者模式。 其中一個可能的原因是 Azure VM 上的目標 SQL Server 處於升級模式。

解決方案:等候 Azure VM 上的目標 SQL Server 結束升級模式,然後重新開始移轉。

無法建立還原作業

錯誤Ext_RestoreSettingsError, message: Failed to create restore job.;Cannot create file 'F:\data\XXX.mdf' because it already exists.

解決方案:連線到 Azure VM 上的目標 SQL Server,並刪除 XXX.mdf 檔案。 然後,再次開始移轉。