移轉概觀:SQL Server 至 Azure SQL Database

適用於:Azure SQL Database

了解將 SQL Server 資料庫遷移至 Azure SQL Database 的選項和考量。

您可以遷移執行位置如下的現有 SQL Server 資料庫:

  • 虛擬機器上的 SQL Server
  • Amazon EC2 (Elastic Compute Cloud)
  • Amazon RDS (關聯式資料庫服務) for SQL Server
  • Google Compute Engine
  • Cloud SQL for SQL Server - GCP (Google Cloud Platform)

如需其他移轉指南,請參閱資料庫移轉

概觀

Azure SQL Database 是一個建議的目標選項,適用於需要完全受控的平台即服務 (PaaS) 的 SQL Server 工作負載。 SQL Database 可處理大部分的資料庫管理功能。 此外也具有內建的高可用性、智慧型查詢處理、可擴縮性和效能等功能,可因應許多應用程式類型的需求。

SQL Database 提供了多種部署模型服務層級的彈性,以因應各類應用程式或工作負載的需求。

遷移至 SQL Database 的主要優點之一,是可以使用 PaaS 功能將應用程式現代化。 其後,您就無需再依賴執行個體層級範圍的技術元件,例如 SQL Agent 作業。

您也可以使用適用於 SQL Server 的 Azure Hybrid Benefit,將 SQL Server 內部部署授權遷移至 Azure SQL Database,以節省成本。 如果您選擇以虛擬核心為基礎的購買模型,則可以使用此選項。

請務必參閱 Azure SQL Database 中可用的 SQL Server 資料庫引擎功能,驗證您的移轉目標受到支援。

考量

評估移轉選項時要考量的主要因素包括:

  • 伺服器和資料庫數目
  • 資料庫大小
  • 移轉過程中可接受的業務中斷

本指南中所列的移轉選項會將這些因素納入考量。 若要將邏輯資料遷移至 Azure SQL Database,遷移的時間可能取決於資料庫中的物件數目和資料庫大小。

工具適用於各種工作負載和使用者喜好設定。 有些工具可透過以 UI 為基礎的工具,用來快速遷移單一資料庫。 有些工具則可自動遷移多個資料庫,以大規模處理移轉。

選擇適當的目標

請考量一般指導方針,以利選擇正確的 Azure SQL Database 部署模型和服務層級。 您可以在部署期間選擇計算和儲存體資源,之後使用 Azure 入口網站加以變更,不會導致應用程式停止運作。

部署模型:了解您的應用程式工作負載和使用模式,以決定要採用單一資料庫還是彈性集區。

  • 單一資料庫代表適用於多數新式雲端應用程式和微服務的完全受控資料庫。
  • 彈性集區是具有一組共用資源 (例如 CPU 或記憶體) 的單一資料庫集合。 它適用於集區中具有可預測的使用模式、而能夠有效共用同一組資源的合併資料庫。

購買模型:在虛擬核心、資料庫交易單位 (DTU) 或無伺服器購買模型之間選擇。

  • 虛擬核心模型可讓您選擇 Azure SQL Database 的虛擬核心數目,因此當您從內部部署 SQL Server 轉譯時,這是最簡單的選擇。 這是唯一支援使用 Azure Hybrid Benefit 來節省授權成本的選項。
  • DTU 模型會擷取基礎計算、記憶體和 I/O 資源,以提供混合的 DTU。
  • 無伺服器模型適用於需要自動隨需調整的工作負載 (計算資源按每秒使用量計費)。 無伺服器計算層在非作用中期間會自動暫停資料庫 (此時只對儲存體計費)。 活動恢復時即自動繼續執行資料庫。

服務層級:從針對不同應用程式類型而設計的三種服務層級中選擇。

  • 一般用途/標準服務層級提供平衡的預算導向選項,以及適合用來提供中、下層級應用程式的計算資源和儲存體。 儲存體層內建了備援功能,可讓您在失敗後復原。 這是為了大部分的資料庫工作負載而設計的。
  • 業務關鍵/進階服務層級適用於需要高交易率、低延遲 I/O 和高復原能力的高階應用程式。 次要複本可用於容錯移轉和卸載讀取工作負載。
  • 超大規模資料庫服務層級適用於需要較高效能和可用性、快速備份和還原,以及/或快速儲存體和計算可擴縮性的所有客戶。 這包括要移至雲端將其應用程式現代化的客戶,以及已在 Azure SQL Database 中使用其他服務層級的客戶。 超大規模資料庫服務層級支援各種不同的資料庫工作負載,從純 OLTP 到純分析。 已針對工作負載 (OLTP) 和混合式交易和分析處理 (HTAP) 進行最佳化。

重要

交易記錄速率在 Azure SQL Database 中會受到控制,以限制高擷取速率。 因此,在移轉期間,您可能必須調整目標資料庫資源 (虛擬核心或 DTU),以紓解 CPU 或輸送量的壓力。 請選擇適當大小的目標資料庫,但視需要擴大資源以供移轉之用。

SQL Server VM 替代方案

您的企業可能會要求讓 Azure 虛擬機器上的 SQL Server 變成比 Azure SQL Database 更適合的目標。

如果下列任一條件適用於您的企業,請考慮移至 SQL Server 虛擬機器 (VM):

  • 您需要直接存取作業系統或檔案系統,例如在具有 SQL Server 的相同虛擬機器上安裝第三方或自訂代理程式。
  • 如果您非常依賴仍未支援的功能,例如 FileStream/FileTable、PolyBase 及跨執行個體異動。
  • 您必須維持在特定版本的 SQL Server (例如 2012 版)。
  • 您的計算需求遠低於受控執行個體所提供的 (例如,只需要一個虛擬核心),且資料庫彙總不是可接受的選項。

移轉工具

建議使用下列移轉工具:

技術 描述
Azure Migrate 此 Azure 服務可協助您在 VMware 上大規模探索及評估您的 SQL 資料資產。 這會提供 Azure SQL 部署建議、目標調整及每月預估值。
適用於 Azure Data Studio 的 Azure SQL 移轉擴充功能 Azure 資料庫移轉服務提供技術支援的情況下,適用於 Azure Data Studio 的 Azure SQL 移轉延伸模組可協助您評估資料庫需求,以了解您執行移轉作業的整備程度、取得正確的 Azure 資源大小 SKU 建議,以及將 SQL Server 資料庫移轉至 Azure。 您可以使用 PowerShell 和 Azure CLI 來移轉單一資料庫或大規模移轉。

下表列出替代移轉工具:

技術 描述
異動複寫 提供發行者-訂閱者類型移轉選項,同時保有異動一致性,將資料從來源 SQL Server 資料庫資料表複寫至 Azure SQL Database。 在發行者端進行的累加資料變更,會隨即傳播至訂閱者。
匯入/匯出服務/BACPAC BACPAC 是副檔名為 .bacpac 的 Windows 檔案,會封裝資料庫的結構描述和資料。 您可以使用 BACPAC 從 SQL Server 來源匯出資料,以及將資料匯入 Azure SQL Database 中。 BACPAC 檔案可透過 Azure 入口網站 匯入至新的 SQL 資料庫。

對於大型資料庫或大量資料庫,若要提高其調整能力和效能,請考慮使用 SqlPackage 命令列工具來匯出和匯入資料庫。
大量複製 大量複製程式 (bcp) 工具會將 SQL Server 執行個體的資料複製到資料檔案中。 使用工具從來源匯出資料,並將資料檔案匯入目標 SQL 資料庫中。

對於將資料移至 Azure SQL Database 的高速大量複製作業,您可以使用 Smart Bulk Copy 工具,運用平行複製工作,將傳輸速率最大化。
Azure Data Factory Azure Data Factory 中的複製活動會使用內建連接器和整合執行階段,將資料從來源 SQL Server 資料庫移轉至 Azure SQL Database。

Data Factory 支援多種連接器,將資料從 SQL Server 來源移至 Azure SQL Database。
SQL 資料同步 SQL 資料同步處理是以 Azure SQL Database 為基礎的服務,可讓您在內部部署和雲端中跨多個資料庫雙向同步處理選取的資料。
當資料需要在 Azure SQL Database 或 SQL Server 的數個資料庫之間保持更新時,資料同步處理將有其效用。

比較移轉選項

比較移轉選項,以選擇適合您的商務需求的途徑。

下表比較我們建議的移轉選項:

移轉選項 使用時機 考量
Azure Migrate - 從單一資料庫從不同環境大規模探索及評估。 - 基礎結構、資料和應用程式包含所有預先移轉步驟,例如探索、評估和正確調整內部部署資源的大小。
適用於 Azure Data Studio 的 Azure SQL 移轉擴充功能 - 遷移單一資料庫,或大規模遷移。
- 僅限離線模式。

支援的來源:
- 內部部署或在 Amazon EC2 虛擬機器的 SQL Server (2008 後的版本)
上 - Amazon EC2 上的 SQL Server
- 適用於 SQL Server 的 Amazon RDS
- Google Compute Engine 上的 SQL Server
- 大規模移轉可透過 PowerShell 或 Azure CLI 自動化。

- 移轉作業的完成時間取決於資料庫大小和資料庫中的物件數量。

- 當您不使用 PowerShell 或 Azure CLI 時,需要 Azure Data Studio。

下表比較替代移轉選項:

方法或技術 使用時機 考量
異動複寫 - 藉由持續將來源資料庫資料表的變更發佈至目標 SQL Database 資料表,進行遷移。
- 進行所選資料表 (資料庫的子集) 的完整或部分資料庫移轉。

支援的來源:
- SQL Server (2016 至 2019),有一些限制
- AWS EC2
- GCP Compute SQL Server VM
- 設定相較於其他移轉選項較複雜。
- 提供連續複寫選項以遷移資料 (不須讓資料庫離線)。
- 在來源 SQL Server 執行個體上設定發行者時,異動複寫有要考量的限制。 若要深入了解,請參閱發佈物件的限制
- 您可以監視複寫活動
匯入/匯出服務/BACPAC - 遷移個別企業營運應用程式資料庫。
- 適用於小型資料庫。
不需其他移轉服務或工具。

支援的來源:
- 內部部署或 Azure VM 的 SQL Server (2005 至 2019)
- AWS EC2
- AWS RDS
- GCP 計算 SQL Server VM
- 需停止運作,因為資料必須在來源匯出並在目的地匯入。
- 匯出或匯入中使用的檔案格式和資料類型必須與資料表結構描述一致,避免截斷或資料類型不符錯誤。
- 匯出具大量物件的資料庫花費的時間可能大幅增加。
大量複製 - 進行完整或部分資料移轉。
- 可因應停止運作。

支援的來源:
- 內部部署或 Azure VM 的 SQL Server (2005 至 2019)
- AWS EC2
- AWS RDS
- GCP 計算 SQL Server VM
- 需停止運作以從來源匯出資料並匯入目標。
- 匯出或匯入中使用的檔案格式和資料類型必須與資料表結構描述一致。
Azure Data Factory - 從來源 SQL Server 資料庫遷移及/或轉換資料。
- 將來自多個資料來源的資料合併至 Azure SQL Database,通常適用於商業智慧 (BI) 工作負載。
- 需要在 Data Factory 中建立資料移動管線,將資料從來源移至目的地。
- 成本是重要考量,根據管線觸發程序、活動回合和資料移動持續時間而定。
SQL 資料同步 - 在來源與目標資料庫之間同步處理資料。
- 適合用來在 Azure SQL Database 與內部部署 SQL Server 之間雙向執行持續同步處理。
- Azure SQL Database 必須是中樞資料庫,才能與作為成員資料庫的內部部署 SQL Server 資料庫同步處理。
- 相較於異動複寫,SQL 資料同步處理支援在內部部署與 Azure SQL Database 之間的雙向資料同步處理。
- 對效能可能會有較高的影響,視工作負載而定。

功能互通性

移轉依賴其他 SQL Server 功能的工作負載時,還有其他考量。

SQL Server Integration Services

藉由將 SQL Server Integration Services (SSIS) 套件重新部署至 Azure Data Factory 中的 Azure-SSIS 執行階段,將這些套件遷移至 Azure。 Azure Data Factory 提供會在 Azure 中執行 SSIS 套件的執行階段,以支援 SSIS 套件的移轉。 或者,您可以使用資料流程來重寫 Azure Data Factory 中的原生 SSIS ETL (擷取、轉換、載入) 邏輯。

SQL Server Reporting Services

將 SQL Server Reporting Services (SSRS) 報表移轉至 Power BI 中的編頁報表。 利用 RDL 移轉工具來準備和遷移您的報表。 Microsoft 開發此工具,協助客戶將報表定義語言 (RDL) 報表,從其 SSRS 伺服器移轉至 Power BI。 其可在 GitHub 上取得,其中記載移轉案例的端對端逐步解說。

高可用性

SQL Server 高可用性功能 (例如 Always On 容錯移轉叢集執行個體和 Always On 可用性群組) 的手動設定,在目標 SQL 資料庫上已淘汰。 Azure SQL Database 的一般用途 (標準可用性模型) 業務關鍵 (進階可用性模型) 服務層級均已內建高可用性架構。 業務關鍵/進階服務層也提供讀取縮放功能,可讓您以唯讀形式連線至其中一個次要節點。

除了 Azure SQL 資料庫內含的高可用性架構以外,還有自動容錯移轉群組功能可讓您管理將受控執行個體中的資料庫,複寫和容錯移轉至另一個區域。

登入和群組

Azure SQL 資料庫不支援 Windows 登入,請改為建立 Microsoft Entra ID (之前稱為 Azure Active Directory) 登入。 手動重新建立任何 SQL 登入。

SQL Agent 作業

Azure SQL Database 不直接支援 SQL Agent 作業,而必須將這些作業部署至彈性資料庫作業 (預覽)

系統資料庫

對於 Azure SQL 資料庫,適用的系統資料庫只有 mastertempdb。 若要深入了解,請參閱 Azure SQL Database 中的 Tempdb

進階功能

請務必充分運用 SQL Database 中的進階雲端式功能。 舉例來說,您不須擔心管理備份,因為此服務會為您管理。 您可以還原至保留期間內的任一個時間點

若要加強安全性,請考慮使用 Microsoft Entra 驗證稽核威脅偵測資料列層級安全性動態資料遮罩

除了進階管理和安全性功能以外,SQL Database 還提供可協助您監視和微調工作負載的工具。 Azure SQL 分析 (預覽) 是一個進階解決方案,可在單一檢視中大規模且跨多個訂用帳戶監視您在 Azure SQL Database 中所有資料庫的效能。 Azure SQL 分析會收集關鍵的效能計量,以視覺效果方式呈現,並有內建智慧功能可以執行效能疑難排解。

自動微調會持續監視您的 SQL 執行計畫效能,並自動修正已識別的效能問題。

移轉資產

如需更多協助,請參閱下列針對實際移轉專案製作的資源。

資產 說明
資料工作負載評定模型及工具 此工具會針對工作負載,提供建議的「最適合」目標平台、雲端整備,以及應用程式/資料庫補救等級。 提供自動化和統一的目標平台決策程序,簡單按一下就能計算和報表,有助於加快評估大型資產。
使用 PowerShell 大量建立資料庫 您可以使用三個為一組的 PowerShell 指令碼,以建立資源群組 (create_rg.ps1)、Azure 中的邏輯伺服器 (create_sqlserver.ps1),以及 SQL 資料庫 (create_sqldb.ps1)。 這些指令碼包含迴圈功能,讓您能夠視需要逐一查看和建立任意數量的伺服器與資料庫。
使用 MSSQL-Scripter 和 PowerShell 大量部署結構描述 此資產會建立資源群組、建立一或多個 Azure 中的邏輯伺服器以裝載 Azure SQL Database、從一個內部部署 SQL Server 執行個體 (或多個 SQL Server 2005+ 執行個體) 匯出每個結構描述,以及將結構描述匯入 Azure SQL Database。
將 SQL Server Agent 作業轉換成彈性資料庫作業 此指令碼會將您的來源 SQL Server Agent 作業遷移至彈性資料庫作業。
將內部部署 SQL Server 登入移至 Azure SQL Database 的公用程式 PowerShell 指令碼可以建立 T-SQL 命令指令碼,重新建立登入,並選取從內部部署 SQL Server 至 Azure SQL Database 的資料庫使用者。 此工具可自動將 Windows Server Active Directory 帳戶對應至 Microsoft Entra 帳戶,以及選擇性移轉 SQL Server 原生登入。
使用 Logman 將 Perfmon 資料收集自動化 您可以使用 Logman 工具,收集 Perfmon 資料 (協助您了解基準效能) 並獲得移轉目標建議。 此工具會使用 logman.exe 建立命令,該命令會建立、啟動、停止及刪除遠端 SQL Server 執行個體上設定的效能計數器。

資料 SQL 工程小組開發這些資源。 此小組的核心任務是為資料平台遷移專案的複雜現代化排除障礙,加速遷移至 Microsoft 的 Azure 資料平台。

後續步驟