共用方式為


教學課程:使用 DMS (傳統) 將 SQL Server 移轉至 Azure SQL Database

重要

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 Studio 的 Azure SQL 移轉延伸模組移轉至 Azure SQL Database。

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

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

您將了解如何:

  • 使用 Data Migration Assistant 評估您的內部部署資料庫是否有任何執行問題。
  • 使用 Data Migration Assistant 來遷移資料庫範例結構描述。
  • 註冊 Azure DataMigration 資源提供者。
  • 建立 Azure 資料庫移轉服務的執行個體。
  • 使用 Azure 資料庫移轉服務來建立移轉專案。
  • 執行移轉。
  • 監視移轉。

必要條件

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

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

  • 啟用 TCP/IP 通訊協定,在 SQL Server Express 安裝期間預設會停用,方法是遵循啟用或停用伺服器網路通訊協定一文中的指示。

  • 將 AdventureWorks2016 資料庫還原至 SQL Server 執行個體。

  • 依照使用 Azure 入口網站在 Azure SQL Database 中建立資料庫一文中的詳細資料,在 Azure SQL Database 中建立資料庫。 基於本教學課程的目的,Azure SQL Database 的名稱會假設為 AdventureWorksAzure,但您可以命名為不同的名稱。

    注意

    如果您使用 SQL Server Integration Services (SSIS),而且想要將 SSIS 專案/套件 (SSISDB) 的目錄資料庫從 SQL Server 遷移到 Azure SQL Database,當您在 Azure Data Factory (ADF) 中佈建 SSIS 時,系統會自動代替您建立及管理目的地 SSISDB。 如需有關遷移 SSIS 套件的詳細資訊,請參閱將 SQL Server Integration Services 套件遷移到 Azure 一文。

  • 下載並安裝最新版本的 Data Migration Assistant

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

    注意

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

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

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

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

  • 確定您虛擬網路的網路安全性群組輸出安全性規則不會封鎖服務匯流排、儲存體和 Azure 監視器服務標籤的輸出連接埠 443。 如需 Azure 虛擬網路 NSG 流量篩選的詳細資訊,請參閱使用網路安全性群組來篩選網路流量

  • 設定用於 Database Engine 存取的 Windows 防火牆

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

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

  • 使用來源資料庫前面的防火牆設備時,您可能必須新增防火牆規則,才能讓 Azure 資料庫移轉服務存取來源資料庫,以進行移轉。

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

  • 確定用來連線至來源 SQL Server 執行個體的認證具有 CONTROL SERVER 權限。

  • 確定用來連線至目標 Azure SQL DB 執行個體的認證,在目標資料庫上具有 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 Database 中的單一資料庫或集區資料庫之前,您必須評估 SQL Server 資料庫是否有任何可能會阻礙移轉的問題。 使用 Data Migration Assistant,依照執行 SQL Server 移轉評估一文中所描述的步驟,完成內部部署資料庫評估。 所需的步驟摘要如下:

  1. 在 Data Migration Assistant 中,選取 [新增] (+) 圖示,然後選取 [評估] 專案類型。

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

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

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

    預設會選取這兩種報告類型。

  3. 在 Data Migration Assistant 的 [Options] \(選項\) 畫面上,選取 [Next] \(下一步\)

  4. 在 [Select sources] \(選取來源\) 畫面的 [Connect to a server] \(連線到伺服器\) 對話方塊中,提供您 SQL Server 的連線詳細資料,然後選取 [Connect] \(連線\)

  5. [新增來源] 對話方塊中,選取 [AdventureWorks2016][新增],然後選取 [開始評估]

    注意

    如果您使用 SSIS,DMA 目前不支援來源 SSISDB 的評估。 不過會評估/驗證 SSIS 專案/套件,因為它們會重新部署到 Azure SQL Database 所裝載的目的地 SSISDB。 如需有關遷移 SSIS 套件的詳細資訊,請參閱將 SQL Server Integration Services 套件遷移到 Azure 一文。

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

    評估數據遷移

    對於 Azure SQL Database 中的資料庫,評估會識別部署至單一資料庫或集區資料庫時的功能同位問題和移轉執行問題。

    • SQL Server 功能同位類別提供一組完整的建議、Azure 中可使用的替代方法以及補救步驟,協助您規劃移轉專案所需的時間和精力。
    • 相容性問題類別則識別反映出相容性問題的部分支援或不支援功能,這些相容性問題可能會阻礙將 SQL Server 資料庫移轉至 Azure SQL Database。 同時也提供協助您解決這些問題的建議。
  6. 選取特定的選項,檢閱評估結果是否有阻礙移轉的問題和功能同位問題。

移轉範例結構描述

當您滿意評估結果,且認為選取的資料庫也適合遷移至 Azure SQL Database 中的單一資料庫或集區資料庫之後,請使用 DMA 將結構描述遷移至 Azure SQL Database。

注意

在 Data Migration Assistant 中建立移轉專案之前,請務必先確認您已經如必要條件中所述在 Azure 中佈建資料庫。

重要

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

若要將 AdventureWorks2016 結構描述移轉到 Azure SQL Database 中的單一資料庫或集區資料庫,請執行下列步驟:

  1. 在資料移轉小幫手中,選取新增 (+) 圖示,然後在 [專案類型] 底下選取 [移轉]

  2. 在 [Source server type] \(來源伺服器類型\) 文字方塊中指定專案名稱,選取 [SQL Server],然後在 [Target server type] \(目標伺服器類型\) 文字方塊中,選取 [Azure SQL Database]

  3. 在 [Migration Scope] \(移轉範圍\) 下,選取 [Schema only] \(僅結構描述\)

    執行先前的步驟之後,Data Migration Assistant 介面應該如下圖所示:

    建立數據 移轉小幫手 專案

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

  5. 在 Data Migration Assistant 中,為您的 SQL Server 指定來源連線詳細資料,選取 [連線],然後選取 [AdventureWorks2016] 資料庫。

    數據 移轉小幫手 來源連線詳細數據

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

    數據 移轉小幫手 目標連線詳細數據

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

    預設會選取所有物件。

    產生 SQL 腳稿

  8. 選取 [Generate SQL script] \(產生 SQL 指令碼\) 來建立 SQL 指令碼,然後檢閱指令碼是否有任何錯誤。

    架構腳本

  9. 選取 [Deploy schema] \(部署結構描述\) 以將結構描述部署至 Azure SQL Database,並在結構描述部署好之後,檢查目標伺服器是否有任何異常狀況。

    部署架構

註冊資源提供者

您必須在建立第一個資料庫移轉服務執行個體之前,註冊 Microsoft.DataMigration 資源提供者。

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

    顯示入口網站訂用帳戶

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

    顯示資源提供者

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

    註冊資源提供者

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

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

    Azure Marketplace

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

    建立 Azure 資料移轉服務 實例

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

    選取 資料移轉服務 (傳統) 案例

  3. 在 [建立移轉服務] 的基本資料畫面上:

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

    設定 Azure 資料移轉服務 實例基本設定

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

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

    設定 Azure 資料移轉服務 實例網路設定

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

    • 在幾分鐘之後,您的 Azure 資料庫移轉服務執行個體就會建立且可供使用:

    已建立移轉服務

建立移轉專案

建立服務之後,請在 Azure 入口網站中找出該服務,然後建立新的移轉專案。

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

    找出所有 Azure 資料移轉服務 實例

  2. 在 [Azure 資料庫移轉服務] 畫面上,選取您建立的 Azure 資料庫移轉服務執行個體。

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

    找出您的實例 Azure 資料移轉服務

  4. [新增移轉專案] 畫面上指定專案名稱、在 [來源伺服器類型] 文字方塊中選取 [SQL Server]、在 [目標伺服器類型] 文字方塊中選取 [Azure SQL Database],然後針對 [選擇移轉活動類型],選取 [資料移轉]

    建立 資料移轉服務 專案

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

指定來源詳細資料

  1. 在 [選取來源] 畫面上,指定來源 SQL Server 執行個體的連線詳細資料。

    請務必使用來源 SQL Server 執行個體名稱的完整網域名稱 (FQDN)。 如果無法解析 DNS 名稱,您也可以使用 IP 位址。

  2. 如果您尚未在來源伺服器上安裝信任的憑證,選取 [信任伺服器憑證] 核取方塊。

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

    警告

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

    重要

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

    來源詳細數據

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

選取要移轉的資料庫

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

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

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

    來源資料庫

指定目標詳細資料

  1. [選取目標] 畫面上,為您的 Azure SQL Database 提供驗證設定。

    選取目標

    注意

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

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

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

    對應到目標資料庫

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

    Azure 資料庫移轉服務會自動選取存在於目標 Azure SQL Database 執行個體上的所有空來源資料表。 如果您想要重新移轉已包含資料的資料表,就必須在此刀鋒視窗上明確地選取資料表。

    選取資料表

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

    選擇驗證選項

執行移轉

  • 選取 [開始移轉]

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

    活動狀態

監視移轉

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

    活動狀態已完成

  2. 驗證目標 Azure SQL Database 上的目標資料庫。

其他資源