教學課程:使用 DMS 將 SQL Server 遷移至 Azure SQL 資料庫 (傳統)

重要

Azure 資料移轉服務 (傳統) - SQL 案例位於淘汰路徑上。 自 2023 年 8 月 1 日起,您無法再從 Azure 入口網站 建立 SQL Server 案例的新 資料移轉服務 (傳統) 資源。 服務將於 2026 年 3 月 15 日淘汰給所有客戶。 若要順暢地從多個資料庫來源移轉至 Azure SQL 目標,Microsoft 建議使用最新版的 Azure 資料移轉服務,其可作為 Azure SQL 移轉 Azure Data Studio 中的延伸模組,或透過 Azure 入口網站,或透過 Azure PowerShell 和 Azure CLI 使用。 如需詳細資訊,請參閱淘汰通知:資料移轉服務(傳統)

注意

本教學課程使用舊版的 Azure 資料移轉服務。 如需改善的功能和支援性,請考慮使用適用於 Azure Data StudioAzure SQL 移轉延伸模組移轉至 Azure SQL 資料庫。

若要比較版本之間的功能,請檢閱 比較版本

您可以使用 Azure 資料移轉服務,將資料庫從 SQL Server 實例移轉至 Azure SQL 資料庫。 在本教學課程中,您會使用 Azure 資料移轉服務,將已還原至 SQL Server 2016 (或更新版本)內部部署實例的 AdventureWorks2016 資料庫移轉至 Azure SQL 資料庫 中的單一資料庫或集區資料庫。

您將了解如何:

  • 使用數據 移轉小幫手 評估內部部署資料庫是否有任何封鎖問題。
  • 使用數據 移轉小幫手 移轉資料庫範例架構。
  • 註冊 Azure DataMigration 資源提供者。
  • 建立 Azure 資料庫移轉服務的執行個體。
  • 使用 Azure 資料移轉服務 建立移轉專案。
  • 執行移轉。
  • 監視移轉。

必要條件

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

  • 下載並安裝 SQL Server 2016 或更新版本

  • 依照啟用或停用伺服器網路協定一文 中的指示,啟用預設在 SQL Server Express 安裝期間停用的 TCP/IP 通訊協定

  • 將 AdventureWorks2016 資料庫還原至 SQL Server 實例。

  • 在 Azure SQL 資料庫 中建立資料庫,您可以遵循使用 Azure 入口網站 在 Azure SQL 資料庫 中建立資料庫一文中的詳細數據。 針對本教學課程的目的,Azure SQL 資料庫 的名稱會假設為 AdventureWorksAzure,但您可以提供您想要的任何名稱。

    注意

    如果您使用 SQL Server Integration Services (SSIS),而且想要將 SSIS 專案/套件 (SSISDB) 的目錄資料庫從 SQL Server 移轉至 Azure SQL 資料庫,當您在 Azure Data Factory 中布建 SSIS 時,將會代表您自動建立和管理目的地 SSISDB。 如需移轉 SSIS 套件的詳細資訊,請參閱將 SQL Server Integration Services 套件移轉至 Azure 一文

  • 下載並安裝最新版本的數據 移轉小幫手

  • 使用 Azure Resource Manager 部署模型建立適用於 Azure 資料庫移轉服務的 Microsoft Azure 虛擬網路,此模型會使用 ExpressRouteVPN 提供內部部署來源伺服器的站對站連線。 如需建立虛擬網路的詳細資訊,請參閱 虛擬網絡 檔,特別是包含逐步詳細數據的快速入門文章。

    注意

    在虛擬網路設定期間,如果您使用 ExpressRoute 搭配網路對等互連至 Microsoft,請將下列服務 端點 新增至將布建服務的子網:

    • 目標資料庫端點 (例如,SQL 端點、Azure Cosmos DB 端點等)
    • 儲存體端點
    • 服務匯流排端點

    此為必要設定,因為 Azure 資料庫移轉服務沒有網際網路連線。

    如果您在內部部署網路與 Azure 之間沒有站對站連線,或有有限的站對站連線頻寬,請考慮在混合模式中使用 Azure 資料移轉服務 (預覽)。 混合模式會利用內部部署移轉背景工作角色,以及雲端中執行的 Azure 資料移轉服務 實例。 若要在混合模式中建立 Azure 資料移轉服務 實例,請參閱使用 Azure 入口網站 在混合模式中建立 Azure 資料移轉服務 實例一文

  • 請確定您的虛擬網路網路安全組輸出安全性規則不會封鎖 ServiceBus、儲存體 和 AzureMonitor 的 ServiceTag 輸出埠 443。 如需 Azure 虛擬網路 NSG 流量篩選的詳細資訊,請參閱使用網路安全組篩選網路流量一文

  • 設定您的 Windows 防火牆以進行資料庫引擎存取

  • 在 Windows 上開啟防火牆,以允許 Azure 資料移轉服務 存取來源 SQL Server,預設為 TCP 連接埠 1433。 如果您的預設實例正在接聽其他埠,請將它新增至防火牆。

  • 如果您使用動態埠執行多個具名 SQL Server 實例,您可能想要啟用 SQL Browser 服務,並允許透過防火牆存取 UDP 連接埠 1434,讓 Azure 資料移轉服務 可以連線到來源伺服器上的具名實例。

  • 在源資料庫前面使用防火牆設備時,您可能需要新增防火牆規則,以允許 Azure 資料移轉服務 存取源資料庫進行移轉。

  • 建立 Azure SQL 資料庫 的伺服器層級 IP 防火牆規則,以允許 Azure 資料移轉服務 存取目標資料庫。 提供用於 Azure 資料庫移轉服務之虛擬網路的子網路範圍。

  • 請確定用來連線到來源 SQL Server 實例的認證具有 CONTROL SERVER 許可權。

  • 確定用來連線到目標 Azure SQL 資料庫 實例的認證具有目標資料庫的 CONTROL DATABASE 許可權。

    重要

    建立 Azure 資料庫移轉服務執行個體需要存取通常不在相同資源群組內的虛擬網路設定。 因此,建立 DMS 執行個體的使用者需要訂用帳戶層級的權限。 若要建立您可以視需要指派的必要角色,請執行下列腳本:

    
    $readerActions = `
    "Microsoft.Network/networkInterfaces/ipConfigurations/read", `
    "Microsoft.DataMigration/*/read", `
    "Microsoft.Resources/subscriptions/resourceGroups/read"
    
    $writerActions = `
    "Microsoft.DataMigration/services/*/write", `
    "Microsoft.DataMigration/services/*/delete", `
    "Microsoft.DataMigration/services/*/action", `
    "Microsoft.Network/virtualNetworks/subnets/join/action", `
    "Microsoft.Network/virtualNetworks/write", `
    "Microsoft.Network/virtualNetworks/read", `
    "Microsoft.Resources/deployments/validate/action", `
    "Microsoft.Resources/deployments/*/read", `
    "Microsoft.Resources/deployments/*/write"
    
    $writerActions += $readerActions
    
    # TODO: replace with actual subscription IDs
    $subScopes = ,"/subscriptions/00000000-0000-0000-0000-000000000000/","/subscriptions/11111111-1111-1111-1111-111111111111/"
    
    function New-DmsReaderRole() {
    $aRole = [Microsoft.Azure.Commands.Resources.Models.Authorization.PSRoleDefinition]::new()
    $aRole.Name = "Azure Database Migration Reader"
    $aRole.Description = "Lets you perform read only actions on DMS service/project/tasks."
    $aRole.IsCustom = $true
    $aRole.Actions = $readerActions
    $aRole.NotActions = @()
    
    $aRole.AssignableScopes = $subScopes
    #Create the role
    New-AzRoleDefinition -Role $aRole
    }
    
    function New-DmsContributorRole() {
    $aRole = [Microsoft.Azure.Commands.Resources.Models.Authorization.PSRoleDefinition]::new()
    $aRole.Name = "Azure Database Migration Contributor"
    $aRole.Description = "Lets you perform CRUD actions on DMS service/project/tasks."
    $aRole.IsCustom = $true
    $aRole.Actions = $writerActions
    $aRole.NotActions = @()
    
      $aRole.AssignableScopes = $subScopes
    #Create the role
    New-AzRoleDefinition -Role $aRole
    }
    
    function Update-DmsReaderRole() {
    $aRole = Get-AzRoleDefinition "Azure Database Migration Reader"
    $aRole.Actions = $readerActions
    $aRole.NotActions = @()
    Set-AzRoleDefinition -Role $aRole
    }
    
    function Update-DmsConributorRole() {
    $aRole = Get-AzRoleDefinition "Azure Database Migration Contributor"
    $aRole.Actions = $writerActions
    $aRole.NotActions = @()
    Set-AzRoleDefinition -Role $aRole
    }
    
    # Invoke above functions
    New-DmsReaderRole
    New-DmsContributorRole
    Update-DmsReaderRole
    Update-DmsConributorRole
    

評估您的內部部署資料庫

在您可以將數據從 SQL Server 實例遷移至 Azure SQL 資料庫 中的單一資料庫或集區資料庫之前,您必須評估 SQL Server 資料庫是否有任何可能造成移轉的封鎖問題。 使用數據 移轉小幫手,請遵循執行 SQL Server 移轉評估一文中所述的步驟來完成內部部署資料庫評量。 必要步驟的摘要如下:

  1. 在 [數據] 移轉小幫手 中,選取 [新增] (+) 圖示,然後選取 [評定項目類型]。

  2. 指定項目名稱。 從 [評定類型] 下拉式清單中,選取 [資料庫引擎],在 [來源伺服器類型] 文本框中,選取 [SQL Server],在 [目標伺服器類型] 文本框中選取 [Azure SQL 資料庫],然後選取 [建立] 以建立專案。

    當您在 Azure SQL 資料庫 中評估移轉至單一資料庫或集區資料庫的來源 SQL Server 資料庫時,您可以選擇下列其中一種或兩種評估報告類型:

    • 檢查資料庫相容性
    • 檢查功能同位

    默認會選取這兩種報表類型。

  3. 在 [數據 移轉小幫手] 的 [選項] 畫面上,選取 [下一步]。

  4. 在 [選取來源] 畫面的 [連線 至伺服器] 對話框中,提供 SQL Server 的連線詳細數據,然後選取 [連線]。

  5. 在 [ 新增來源] 對話框中,選取 [AdventureWorks2016],選取 [新增],然後選取 [ 開始評定]。

    注意

    如果您使用 SSIS,DMA 目前不支援來源 SSISDB 的評量。 不過,SSIS 專案/套件會在重新部署至 Azure SQL 資料庫 所裝載的目的地 SSISDB 時進行評估/驗證。 如需移轉 SSIS 套件的詳細資訊,請參閱將 SQL Server Integration Services 套件移轉至 Azure 一文

    評估完成時,結果會顯示如下圖所示:

    Assess data migration

    針對 Azure SQL 資料庫 中的資料庫,評定會識別功能同位問題和移轉封鎖部署至單一資料庫或集區資料庫的問題。

    • SQL Server 功能同位類別提供一組完整的建議、Azure 中可用的替代方法,以及緩和步驟,以協助您規劃移轉專案的工作。
    • 相容性問題類別會識別部分支援或不支援的功能,以反映可能會封鎖將 SQL Server 資料庫移轉至 Azure SQL 資料庫 的相容性問題。 也會提供 建議 來協助您解決這些問題。
  6. 選取特定選項,以檢閱移轉封鎖問題和功能同位問題的評量結果。

移轉範例架構

當您熟悉評量,並確信選取的資料庫是移轉至 Azure SQL 資料庫 中單一資料庫或集區資料庫的可行候選項目之後,請使用 DMA 將架構移轉至 Azure SQL 資料庫。

注意

在 Data 移轉小幫手 中建立移轉專案之前,請確定您已在 Azure 中布建資料庫,如必要條件中所述。

重要

如果您使用 SSIS,DMA 目前不支援移轉來源 SSISDB,但您可以將 SSIS 專案/套件重新部署至 Azure SQL 資料庫 所裝載的目的地 SSISDB。 如需移轉 SSIS 套件的詳細資訊,請參閱將 SQL Server Integration Services 套件移轉至 Azure 一文

若要將 AdventureWorks2016 架構移轉至單一資料庫或集區資料庫 Azure SQL 資料庫,請執行下列步驟:

  1. 在 [數據] 移轉小幫手 中,選取 [新增] (+) 圖示,然後在 [項目類型] 底下選取 [移轉]。

  2. 在 [來源伺服器類型] 文本框中指定專案名稱,選取 [SQL Server],然後在 [目標伺服器類型] 文本框中,選取 [Azure SQL 資料庫]。

  3. 在 [移轉範圍] 底下,選取 [僅限架構]。

    執行上述步驟之後,[數據 移轉小幫手] 介面應該會顯示如下圖所示:

    Create Data Migration Assistant Project

  4. 選取 [建立] 以建立專案。

  5. 在 [數據 移轉小幫手]中,指定 SQL Server 的來源連線詳細數據、選取 [連線],然後選取 AdventureWorks2016 資料庫。

    Data Migration Assistant Source Connection Details

  6. 選取 [下一步],在 [連線 至目標伺服器] 下,指定 Azure SQL 資料庫 的目標連線詳細數據、選取 [連線],然後選取您在 Azure SQL 資料庫 中預先布建的 AdventureWorksAzure 資料庫。

    Data Migration Assistant Target Connection Details

  7. 選取 [下一步] 以前進到 [選取物件] 畫面,您可以在需要部署到 Azure SQL 資料庫 的 AdventureWorks2016 資料庫中指定架構物件。

    根據預設,會選取所有物件。

    Generate SQL Scripts

  8. 選取 [產生 SQL 腳本] 以建立 SQL 腳本 ,然後檢閱腳本是否有任何錯誤。

    Schema Script

  9. 選取 [部署架構] 將架構部署至 Azure SQL 資料庫,然後在部署架構之後,檢查目標伺服器是否有任何異常狀況。

    Deploy Schema

註冊資源提供者

在您建立第一個 資料移轉服務 實例之前,請先註冊 Microsoft.DataMigration 資源提供者。

  1. 登入 Azure 入口網站。 搜尋並選取訂閱

    Show portal subscriptions

  2. 選取您要在其中建立 Azure 資料移轉服務 實例的訂用帳戶,然後選取 [資源提供者]。

    Show resource providers

  3. 搜尋移轉,然後選取 [註冊Microsoft.DataMigration]。

    Register resource provider

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

  1. 在 [Azure 入口網站] 功能表或 [首頁] 頁面上,選取 [建立資源]。 搜尋並選取 [Azure 資料移轉服務]。

    Azure Marketplace

  2. Azure 資料移轉服務 畫面上,選取 [建立]。

    Create Azure Database Migration Service instance

    選取適當的 [來源伺服器類型] 和 [目標伺服器類型],然後選擇 [資料移轉服務 [傳統] 選項。

    Select Database Migration Service (Classic) scenario

  3. 在 [ 建立移轉服務 基本概念] 畫面上:

    • 選取訂用帳戶。
    • 建立新的資源群組,或選擇現有的資源群組。
    • 指定 Azure 資料移轉服務 實例的名稱。
    • 選取您要在其中建立 Azure 資料移轉服務 實例的位置。
    • 選擇 [Azure ] 作為服務模式。
    • 選取定價層。 如需成本和定價層的詳細資訊,請參閱 定價頁面

    Configure Azure Database Migration Service instance basics settings

    • 選取 [下一步:網路]
  4. 在 [ 建立移轉服務 網络] 畫面上:

    • 選取現有的虛擬網路或建立新的虛擬網路。 虛擬網路提供 Azure 資料移轉服務 來源伺服器和目標實例的存取權。 如需如何在 Azure 入口網站 中建立虛擬網路的詳細資訊,請參閱使用 Azure 入口網站 建立虛擬網路一文

    Configure Azure Database Migration Service instance networking settings

    • 選取 [ 檢閱 + 建立 ] 以檢閱詳細數據,然後選取 [ 建立 ] 以建立服務。

    • 幾分鐘后,Azure 資料庫移轉服務的實例就會建立並可供使用:

    Migration service created

建立移轉專案

建立服務之後,請在 Azure 入口網站 內找到它、開啟它,然後建立新的移轉專案。

  1. 在 [Azure 入口網站] 功能表中,選取 [所有服務]。 搜尋並選取 [Azure 資料移轉服務]。

    Locate all instances of Azure Database Migration Service

  2. [Azure 資料移轉服務] 畫面上,選取您所建立 Azure 資料移轉服務 實例。

  3. 選取 [新增移轉專案]

    Locate your instance of Azure Database Migration Service

  4. 在 [新增移轉專案] 畫面上,指定專案的名稱,在 [來源伺服器類型] 文本框中,選取 [SQL Server],在 [目標伺服器類型] 文本框中,選取 [Azure SQL 資料庫],然後針對 [選擇移轉活動類型],選取 [數據遷移]。

    Create Database Migration Service Project

  5. 選取 [建立並執行活動 ] 以建立專案並執行移轉活動。

指定來源詳細資料

  1. 在 [ 選取來源] 畫面上,指定來源 SQL Server 實例的連線詳細數據。

    請務必針對來源 SQL Server 實例名稱使用完整功能變數名稱 (FQDN)。 如果無法解析 DNS 名稱,您也可以使用 IP 位址。

  2. 如果您尚未在來源伺服器上安裝受信任的憑證,請選取 [信任伺服器證書 ] 複選框。

    未安裝受信任的憑證時,SQL Server 會在啟動實例時產生自我簽署憑證。 此憑證用來加密客戶端連線的認證。

    警告

    使用自我簽署憑證加密的 TLS 連線不提供強式安全性。 這種連線容易受到攔截式攻擊。 您不應該依賴在生產環境或連線到因特網的伺服器中使用自我簽署憑證的 TLS。

    重要

    如果您使用 SSIS,DMS 目前不支援移轉來源 SSISDB,但您可以將 SSIS 專案/套件重新部署至 Azure SQL 資料庫 所裝載的目的地 SSISDB。 如需移轉 SSIS 套件的詳細資訊,請參閱將 SQL Server Integration Services 套件移轉至 Azure 一文

    Source Details

  3. 選取 [下一步:選取資料庫]

選取要移轉的資料庫

選取您想要移轉至 Azure SQL 資料庫 的所有資料庫或特定資料庫。 DMS 提供所選資料庫的預期移轉時間。 如果可接受移轉停機時間,請繼續進行移轉。 如果無法接受移轉停機時間,請考慮移轉至 SQL 受管理執行個體,且停機時間接近零,或提交改善的想法/建議,以及 Azure 社群論壇中的其他意見反應 - Azure 資料移轉服務

  1. 選擇您要從可用資料庫清單移轉的資料庫。

  2. 檢閱預期的停機時間。 如果可以接受,請選取 [下一步:選取目標] >>

    Source databases

指定目標詳細資料

  1. 在 [選取目標] 畫面上,將驗證設定提供給您的 Azure SQL 資料庫。

    Select target

    注意

    目前,SQL 驗證是唯一支援的驗證類型。

  2. 選取 [下一步:對應至目標資料庫 ] 畫面,對應來源和目標資料庫以進行移轉。

    如果目標資料庫包含與源資料庫相同的資料庫名稱,Azure 資料移轉服務 預設會選取目標資料庫。

    Map to target databases

  3. 選取 [下一步:組態移轉設定],展開數據表清單,然後檢閱受影響的欄位清單。

    Azure 資料移轉服務 自動選取目標 Azure SQL 資料庫 實例上存在的所有空白源數據表。 如果您想要重新匯入已包含資料的數據表,您必須明確選取此刀鋒視窗上的資料表。

    Select tables

  4. 選取 [下一步:摘要],檢閱移轉組態,然後在 [活動名稱] 文本框中指定移轉活動的名稱。

    Choose validation option

執行移轉

  • 選取 [ 開始移轉]。

    [移轉活動] 視窗隨即出現,而 活動的 [狀態 ] 為 [ 擱置]。

    Activity Status

監視移轉

  1. 在移轉活動畫面上,選取 [重新 整理] 以更新顯示,直到 移轉狀態 顯示為 [已完成]。

    Activity Status Completed

  2. 確認目標 Azure SQL 資料庫 上的目標資料庫。

其他資源

  • 如需 Azure 資料移轉服務 的相關信息,請參閱什麼是 Azure 資料移轉服務?一文
  • 如需 Azure SQL 資料庫 的相關信息,請參閱什麼是 Azure SQL 資料庫 服務?一文