教學課程:在 Azure Data Studio 中離線將 SQL Server 遷移至 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 資料移轉服務,將範例 AdventureWorks 資料庫從內部部署 SQL Server 實例遷移至 Azure 虛擬機器 上的 SQL Server 實例。 本教學課程使用離線移轉模式,這會在移轉程式期間考慮可接受的停機時間。

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

  • 在 Azure Data Studio 中開啟 [遷移至 Azure SQL 精靈]
  • 執行來源 SQL Server 資料庫的評估
  • 從來源 SQL Server 實例收集效能資料
  • 取得 Azure 虛擬機器 SKU 上的 SQL Server 建議,該 SKU 最適合您的工作負載
  • 設定 Azure 上 SQL Server 來源 SQL Server 實例、備份位置和目標實例的詳細資料虛擬機器
  • 建立 Azure 資料移轉服務 的實例
  • 啟動移轉並監視完成進度

本教學課程說明從 SQL Server 離線移轉至 Azure 上的 SQL Server 虛擬機器。 如需線上移轉,請參閱 在 Azure Data Studio 中線上將 SQL Server 移轉至 Azure 上的 SQL Server 虛擬機器。

必要條件

開始教學課程之前:

  • 下載並安裝 Azure Data Studio

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

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

    • Azure 虛擬機器 上 SQL Server 目標實例的參與者,以及從伺服器訊息區 (SMB) 網路共用上傳資料庫備份檔案所在的儲存體帳戶參與者
    • Azure 資源群組的讀取者角色,其中包含 Azure 虛擬機器 上 SQL Server 的目標實例或Azure 儲存體帳戶
    • Azure 訂用帳戶的擁有者或參與者角色

    作為使用其中一個內建角色的替代方案,您可以 指派自訂角色

    重要

    只有在設定移轉步驟時,才需要 Azure 帳戶。 評定不需要 Azure 帳戶,或在 Azure Data Studio 的移轉精靈中檢視 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 自我裝載整合執行時間需要連線到資料移轉服務。

    針對公用雲端中新建立的資料處理站,請從自我裝載整合執行時間金鑰中找出完整功能變數名稱 (FQDN),格式為 {datafactory}.{region}.datafactory.azure.net

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

    提示

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

  • 如果您使用自我裝載整合執行時間,請確定安裝執行時間的電腦可以連線到來源 SQL Server 實例和備份檔案所在的網路檔案共用。

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

  • 如果您第一次使用 Azure 資料移轉服務,請確定您的訂 用帳戶中已註冊 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 ] 以開啟移轉精靈。

    Screenshot that shows how to open the Migrate to Azure SQL wizard.

  5. 在精靈的第一頁上,啟動新的會話或繼續先前儲存的會話。

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

  1. 步驟 1:移轉至 Azure SQL 精靈中的評量 資料庫中,選取您要評估的資料庫。 然後選取下一步

  2. 步驟 2:評定結果和建議 中,完成下列步驟:

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

      Screenshot that shows an assessment confirmation.

    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. 步驟 3:移轉至 Azure SQL 精靈中的 Azure SQL 目標 中,選取您的 Azure 帳戶、Azure 訂用帳戶、Azure 區域或位置,以及包含目標 SQL Server 至 Azure 虛擬機器 實例的資源群組。 然後選取下一步

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

    注意

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

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

    注意

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

    如果您的資料庫備份已經在 Azure 儲存體 Blob 容器中,您就不需要設定自我裝載整合執行時間。

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

    名稱 描述
    來源認證 - 使用者名稱 認證 (Windows 和 SQL 驗證) 連接到來源 SQL Server 實例,並驗證備份檔案。
    來源認證 - 密碼 認證 (Windows 和 SQL 驗證) 連接到來源 SQL Server 實例,並驗證備份檔案。
    包含備份的網路共用位置 包含完整和交易記錄備份檔案的網路共用位置。 移轉程式期間,不會自動忽略不屬於有效備份組之網路共用中的任何無效檔案或備份檔案。
    具有網路共用位置讀取權限的 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 位址,以便:

    Screenshot that shows the storage account network details

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

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

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

    Screenshot that shows the storage account network firewall configuration.

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

    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 儲存體帳戶組態] 區段中的程式建立另一個私人端點。

建立資料移轉服務實例

步驟 6:Azure 資料移轉服務 移轉至 Azure SQL 精靈中,建立新的 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 中的移轉精靈。

啟動資料庫移轉

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

監視資料庫移轉

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

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

    monitor migration dashboard

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

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

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

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

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

限制

使用適用于 Azure Data Studio 的 Azure SQL 擴充功能移轉至 Azure VM 上的 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 代理程式擴充功能處於 完整模式 ,而不是輕量模式。
  • SQL IaaS 代理程式擴充功能僅支援管理預設伺服器實例或單一具名實例。
  • 您可以移轉至 SQL Server Azure 虛擬機器的資料庫數目取決於硬體規格和工作負載,但沒有強制執行的限制。 不過,每個資料庫的每個移轉作業(開始移轉、完全移轉)需要幾分鐘的時間。 例如,若要移轉 100 個資料庫,建立移轉佇列/秒大約需要 200 (2 x 100) 分鐘的時間,大約 100 (1 x 100) 分鐘才能完全移轉所有 100 個資料庫(不包括備份和還原時間)。 因此,隨著資料庫數目增加,移轉會變慢。 Microsoft 建議事先根據嚴格的移轉測試排程較長的移轉時間範圍,或在移轉至 SQL Server Azure VM 時,將大量資料庫分割成批次。
  • 除了設定Azure 儲存體帳戶的網路/防火牆之外,還允許您的 VM 存取備份檔案。 您也需要設定 Azure VM 上 SQL Server 的網路/防火牆,以允許連出儲存體帳戶的連線。
  • 您必須在 SQL 移轉進行時,將目標 SQL Server 保留在 Azure VM 電源開啟 上。 此外,建立新的移轉時,容錯移轉或取消移轉。
  • 錯誤 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 檔案。 然後,再次開始移轉。

下一步