移轉概觀:SQL Server 至 Azure SQL 受控執行個體
適用於:Azure SQL 受控執行個體
了解將您 SQL Server 資料庫移轉至 Azure SQL 受控執行個體的選項和考量。
您可以移轉在內部部署或下列項目上執行的 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 受控執行個體是建議目標選項,適用於需完全受控服務的 SQL Server 工作負載,不必管理虛擬機器或其作業系統。 SQL 受控執行個體可讓您將內部部署應用程式移至 Azure,對應用程式或資料庫的變更最小。 可讓您以原生虛擬網路支援,完全隔離您的執行個體。
請務必參閱 Azure SQL 受控執行個體中可用的 SQL Server 資料庫引擎功能,確認您的移轉目標是否支援。
考量
評估移轉選項時要考量的主要因素包括:
- 伺服器和資料庫數目
- 資料庫大小
- 移轉流程中可接受的業務停機
將 SQL Server 資料庫移轉至 SQL 受控執行個體的主要優點之一,就是您可以選擇移轉整個執行個體,或只是其中一些個別資料庫。 請仔細規劃,在您的移轉流程中加入下列項目:
- 所有須共置於相同執行個體的資料庫
- 您應用程式所需執行個體層級物件,包括登入、認證、SQL Agent 作業和運算子,以及伺服器層級觸發程序
注意
Azure SQL 受控執行個體保證 99.99% 可用性,即使在危急情節中。 無法停用 SQL 受控執行個體中部分功能造成的額外負荷。 如需詳細資訊,請參閱 SQL 受控執行個體與 SQL Server 之間效能差異的主要原因 (英文) 部落格文章。
選擇適當目標
您可以使用適用 Azure Data Studio 的 Azure SQL 移轉延伸模組,取得正確大小的 Azure SQL 受控執行個體建議。 此延伸模組會從來源 SQL Server 實例收集效能資料,進而提供正確大小的 Azure 建議,讓您能以最低成本滿足工作負載的效能需求。 若要深入了解,請參閱取得移轉您的 SQL Server 資料庫的 Azure 建議
下列一般指導方針可協助您選擇適當的 SQL 受控執行個體服務層級和特性,協助達到您的效能基準:
- 使用 CPU 使用量基準,佈建受控執行個體,符合您 SQL Server 執行個體使用的核心數量。 可能須調整資源以符合硬體設定特性。
- 使用記憶體使用量基準,選擇適當符合記憶體配置的虛擬核心選項。
- 使用檔案子系統的基準 I/O 延遲,選擇一般用途 (延遲大於 5 毫秒) 或業務關鍵 (延遲小於 3 毫秒) 服務層級。
- 使用基準輸送量預先配置資料和記錄檔大小,以達到預期的 I/O 效能。
您可以在部署期間選擇計算和儲存體資源,之後使用 Azure 入口網站加以變更,不會導致應用程式停機。
重要
受控執行個體虛擬網路需求的任何差異,都可能會讓您無法建立新執行個體或使用現有執行個體。 深入了解建立新的 並 設定現有的 網路。
在 Azure SQL 受控執行個體中選取目標服務層級 (一般用途與業務關鍵) 的另一個主要考量是特定功能的可用性,如內部記憶體 OLTP 僅適用於業務關鍵層級。
SQL Server VM 替代方案
您的企業可能會要求讓 Azure 虛擬機器上的 SQL Server 變成比 Azure SQL 受控執行個體更適合的目標。
如果下列任一條件適用於您的企業,請考慮移至 SQL Server 虛擬機器 (VM):
- 您需要直接存取作業系統或檔案系統,例如在具有 SQL Server 的相同虛擬機器上安裝第三方或自訂代理程式。
- 如果您非常依賴仍未支援的功能,例如 FileStream/FileTable、PolyBase 及跨執行個體異動。
- 您必須維持在特定版本的 SQL Server (例如 2012 版)。
- 您的計算需求遠低於受控執行個體所提供的 (例如,只需要一個虛擬核心),且資料庫彙總不是可接受的選項。
移轉工具
建議使用下列移轉工具:
技術 | 描述 |
---|---|
適用於 Azure Data Studio 的 Azure SQL 移轉擴充功能 | 在 Azure 資料庫移轉服務提供技術支援的情況下,適用於 Azure Data Studio 的 Azure SQL 移轉延伸模組可協助您評估資料庫需求,以了解您執行移轉作業的整備程度、取得正確的 Azure 資源大小 SKU 建議,以及將 SQL Server 資料庫移轉至 Azure。 您可以使用 PowerShell 和 Azure CLI 來移轉單一資料庫,或執行大規模移轉作業。 |
Azure Migrate | 此 Azure 服務可協助您在 VMware 上大規模探索及評估您的 SQL 資料資產。 這會提供 Azure SQL 部署建議、目標調整及每月預估值。 |
原生備份與還原 | SQL 受控執行個體支援還原原生 SQL Server 資料庫備份 (.bak 檔案)。 如果客戶可以提供完整資料庫備份給 Azure 儲存體,這是最簡單的移轉選項。 |
記錄重新執行服務 | 這是以 SQL Server 記錄傳送技術為基礎,針對 SQL 受控執行個體啟用的雲端服務。 這個移轉選項供可以提供完整、差異和記錄資料庫備份給 Azure 儲存體的客戶使用。 記錄重新執行服務用來將備份檔案從 Azure Blob 儲存體還原至 SQL 受控執行個體。 |
受控執行個體連結 | 此功能透過使用 Always On 可用性技術,近即時地複製變更,讓您在線上完成到 SQL 受控執行個體的移轉。 凡是需要在移轉期間於 R/O 模式中存取受控執行個體上的資料庫、需要長時間 (如數週或數月) 持續執行移轉作業、需要對業務關鍵服務層級執行真正的線上複寫作業,以及移轉期間需要最高效能及最短的停機時間,就適合使用這個移轉選項。 |
下表列出替代移轉工具:
技術 | 描述 |
---|---|
異動複寫 | 提供發行者-訂閱者類型移轉選項,同時維持異動一致性,將資料從來源 SQL Server 資料庫資料表複寫至 SQL 受控執行個體。 |
大量複製 | 大量複製程式 (bcp) 工具會將 SQL Server 執行個體的資料複製到資料檔案中。 使用工具從來源匯出資料,並將資料檔案匯入目標 SQL 受控執行個體中。 若為將資料移至 Azure SQL 受控執行個體的高速大量複製作業,您可以使用 Smart Bulk Copy 工具,運用平行複製工作,將傳輸速率最大化。 |
匯入匯出精靈/BACPAC | BACPAC 是副檔名為 .bacpac 的 Windows 檔案,會封裝資料庫的結構描述和資料。 您可以使用 BACPAC 從 SQL Server 來源匯出資料,也可將資料匯回 Azure SQL 受控執行個體。 |
Azure Data Factory | Azure Data Factory 中的複製活動會使用內建連接器和整合執行階段,將資料從來源 SQL Server 資料庫移轉至 SQL 受控執行個體。 Data Factory 支援多種連接器,將資料從 SQL Server 來源移至 SQL 受控執行個體。 |
比較移轉選項
比較移轉選項,以選擇適合您的商務需求的途徑。
下表是建議移轉選項的比較:
移轉選項 | 使用時機 | 考量 |
---|---|---|
Azure SQL 受控執行個體的連結功能 | - 需要最短的停機時間,特別是對於重要的工作負載。 - 需要移轉至業務關鍵服務層級。 - 需要移轉多個資料庫。 - 在移轉期間,需要 Azure SQL 受控執行個體上的資料庫唯讀存取權。 - 需要將 Azure 反向移轉至 SQL Server 2022。 - 將個別的企業營運系統應用程式資料庫,或多個資料庫移轉至相同或多個 SQL 受控執行個體。 - 需要彈性來完全移轉時間範圍。 支援的來源: - SQL Server (2016 到 2022) 內部部署或 Azure VM - Amazon EC2 - GCP 計算 SQL Server VM |
- 移轉需要在 SQL Server 與 SQL 受控執行個體之間建立網路連線,並開啟通訊埠。 - 使用分散式可用性群組技術近乎即時地復寫資料庫,在 SQL 受管理執行個體 上建立 SQL Server 資料庫的確切複本。 - 在移轉進行時,可使用此資料庫在 SQL 受控執行個體上進行唯讀存取。 - 在移轉期間提供最佳效能,並將停機時間降到最短。 - 可以隨時完全移轉,因此移轉的持續時間不受限制 - 不受系統更新或故障轉移影響 |
適用於 Azure Data Studio 的 Azure SQL 移轉擴充功能 | - 遷移單一資料庫,或大規模遷移。 - 線上和離線模式均可執行。 支援的來源: - SQL Server (2005 及更新版本) 內部部署或位於 Azure 虛擬機器 - Amazon EC2 上的 SQL Server - Amazon RDS for SQL Server - Google Compute Engine 上的 SQL Server |
- 大規模移轉作業可透過 PowerShell 或 Azure CLI 自動化。 - 移轉作業的完成時間取決於資料庫大小和資料庫中的物件數量。 - 未使用 PowerShell 或 Azure CLI 時必須使用 Azure Data Studio。 |
記錄重新執行服務 | - 移轉個別企業營運應用程式資料庫。 - 需要進一步控制資料庫移轉。 - 可承受停機的非敏感性工作負載。 - 只能使用公用端點。 - 需要移轉多個資料庫。 支援的來源: - 內部部署或 Azure VM 上的 SQL Server (2008 至 2022) - Amazon EC2 - Amazon RDS for SQL Server - GCP 計算 SQL Server VM |
- 移轉需要在 SQL Server 上進行完整資料庫備份,並將備份檔案複製到 Azure Blob 儲存體。 記錄重新執行服務用來將備份檔案從 Azure Blob 儲存體還原至 SQL 受控執行個體。 - 要在移轉過程中資料庫會處於還原中模式,且在程序完成之前無法用於讀取或寫入工作負載。 - 使用公用端點,因此不需要特殊的網路設定。 - 系統更新或容錯移轉可能會中斷。 |
原生備份與還原 | - 移轉個別企業營運應用程式資料庫。 - 快速輕鬆移轉,不需其他移轉服務或工具。 支援的來源: - 內部部署或 Azure VM 上的 SQL Server (2005 至 2022) - Amazon EC2 - GCP 計算 SQL Server VM |
- 資料庫備份會使用多個執行緒,最佳化將資料傳輸至 Azure Blob 儲存體,但合作夥伴頻寬和資料庫大小可能會影響傳輸速率。 - 停機應能容納執行完整備份和還原所需的時間 (即資料作業的大小)。 |
下表比較替代移轉選項:
方法或技術 | 使用時機 | 考量 |
---|---|---|
異動複寫 | - 藉由持續將來源資料庫資料表的變更發佈至目標 SQL 受控執行個體資料庫資料表,進行移轉。 - 進行所選資料表 (資料庫的子集) 的完整或部分資料庫移轉。 支援的來源: - SQL Server (2012 至 2022 年)有一些限制 - Amazon EC2 - GCP 計算 SQL Server VM |
- 設定相較於其他移轉選項較複雜。 - 提供連續複寫選項以遷移資料 (不須讓資料庫離線)。 - 在來源 SQL Server 執行個體上設定發行者時,異動複寫有要考量的限制。 若要深入了解,請參閱發佈物件的限制。 - 具監視複寫活動功能。 |
大量複製 | - 進行完整或部分資料移轉。 - 可因應停止運作。 支援的來源: - 內部部署或 Azure VM 上的 SQL Server (2005 至 2022) - Amazon EC2 - Amazon RDS for SQL Server - GCP 計算 SQL Server VM |
- 需停止運作以從來源匯出資料並匯入目標。 - 匯出或匯入中使用的檔案格式和資料類型必須與資料表結構描述一致。 |
匯入匯出精靈/BACPAC | - 移轉個別企業營運應用程式資料庫。 - 適用於小型資料庫。 不需要其他移轉服務或工具。 支援的來源: - 內部部署或 Azure VM 上的 SQL Server (2005 至 2022) - Amazon EC2 - Amazon RDS - GCP 計算 SQL Server VM |
- 需停止運作,因為資料必須在來源匯出並在目的地匯入。 - 匯出或匯入中使用的檔案格式和資料類型必須與資料表結構描述一致,避免截斷或資料類型不符錯誤。 - 匯出具大量物件的資料庫花費的時間可能大幅增加。 |
Azure Data Factory | - 從來源 SQL Server 資料庫遷移及/或轉換資料。 - 將來自多個資料來源的資料合併至 Azure SQL 受控執行個體,通常適用於商業智慧 (BI) 工作負載。 |
- 需要在 Data Factory 中建立資料移動管線,將資料從來源移至目的地。 - 成本是重要考量,根據管線觸發程序、活動回合和資料移動持續時間而定。 |
功能互通性
移轉依賴其他 SQL Server 功能的工作負載時,還有其他考量。
SQL Server Integration Services
使用 Azure 資料庫移轉服務,將 SSISDB 中的 SQL Server Integration Services (SSIS) 套件和專案移轉至 Azure SQL 受控執行個體。
僅支援 SQL Server 2012 起 SSISDB 中的 SSIS 套件來進行移轉。 在移轉前轉換舊版 SSIS 套件。 若要深入了解,請參閱專案轉換教學課程。
SQL Server Reporting Services
您可以將 SQL Server Reporting Services (SSRS) 報表移轉至 Power BI 中的編頁報表。 使用 RDL Migration Tool,協助準備和移轉您的報表。 Microsoft 開發此工具,協助客戶將報表定義語言 (RDL) 報表,從其 SSRS 伺服器移轉至 Power BI。 其可在 GitHub 上取得,其中記載移轉案例的端對端逐步解說。
SQL Server Analysis Services
SQL Server 2012 和更新版本的 SQL Server Analysis Services 表格式模型,可移轉至 Azure Analysis Services,這是 Azure 中適用於 Analysis Services 表格式模型的平台即服務 (PaaS) 部署模型。 您可以在此影片教學課程中,深入了解如何將內部部署模型移轉至 Azure Analysis Services。
或者,您可以考慮使用新 XMLA 讀取/寫入端點,將內部部署 Analysis Services 表格式模型移轉至 Power BI Premium。
高可用性
SQL Server 高可用性功能 Always On 容錯移轉叢集執行個體和 Always On 可用性群組,在目標 SQL 受控執行個體上已淘汰。 已為 SQL 受控執行個體,在一般用途 (標準可用性模型)和業務關鍵 (進階可用性模型)服務層級中M,內建高可用性架構。 進階可用性模型也提供讀取縮放功能,可為唯讀目的,連線至其中一個次要節點。
除了 SQL 受控執行個體內含的高可用性架構之外,容錯移轉群組功能還可讓您管理將受控執行個體中的資料庫,複寫和容錯移轉至另一個區域。
SQL Agent 作業
使用離線 Azure 資料庫移轉服務選項,移轉 SQL Agent 作業。 否則,請使用 SQL Server Management Studio,為 Transact-SQL (T-SQL) 中的作業編寫指令碼,然後在目標 SQL 受控執行個體上手動重新建立。
重要
Azure 資料庫移轉服務目前僅支援具有 T-SQL 子系統步驟的作業。 具有 SSIS 套件步驟的作業必須以手動方式移轉。
登入和群組
使用離線模式資料庫移轉服務,將 SQL 登入從 SQL Server 來源移至 Azure SQL 受控執行個體。 使用移轉精靈中的 [選取登入] 窗格,將登入移轉至目標 SQL 受控執行個體。
Azure 資料庫移轉服務預設支援僅移轉 SQL 登入。 不過,您可以透過下列方式啟用移轉 Windows 登入:
- 確認目標 SQL 受控執行個體具有 Microsoft Entra ID (之前稱為 Azure Active Directory) 讀取存取。 擔任全域管理員角色的使用者,可以透過 Azure 入口網站設定該存取權。
- 設定 Azure 資料庫移轉服務,啟用 Windows 使用者或群組登入移轉。 您可以在 [設定] 頁面上,透過 Azure 入口網站設定此設定。 啟用此設定之後,請重新啟動服務,變更才會生效。
重新啟動服務之後,Windows 使用者或群組登入就會出現在可供移轉的登入清單中。 對於您移轉的任何 Windows 使用者或群組登入,系統會提示您提供相關聯的網域名稱。 不支援服務使用者帳戶 (具有 NT AUTHORITY 網域名稱的帳戶) 和虛擬使用者帳戶 (具有 NT SERVICE 網域名稱的帳戶)。 若要深入了解,請參閱教學課程:使用 T-SQL DDL 語法將 SQL Server 執行個體中的 Windows 使用者與群組移轉至 Azure SQL 受控執行個體。
或者,您可以使用 Microsoft 資料移轉架構特別設計的 PowerShell 公用程式。 公用程式會使用 PowerShell 建立 T-SQL 指令碼,重新建立登入,並選取從來源至目標的資料庫使用者。
PowerShell 公用程式會自動將 Windows Server Active Directory 帳戶對應至 Microsoft Entra 帳戶,且可針對來源 Active Directory 執行個體,為每個登入進行 UPN 查閱。 公用程式會為自訂伺服器和資料庫角色編寫指令碼,還有角色成員資格和使用者權限。 尚未支援自主資料庫,而且只會為部分可行的 SQL Server 權限編寫指令碼。
加密
使用原生還原選項,在進行資料庫還原「前」,將受透明資料加密保護的資料庫移轉至受控執行個體時,請從來源 SQL Server 執行個體,將相應憑證移轉至目標 SQL 受控執行個體。
系統資料庫
不支援系統資料庫還原。 若要移轉執行個體層級物件 (儲存於 master
和 msdb
資料庫),請使用 T-SQL 為其編寫指令碼,然後在目標受控執行個體上重新建立。
記憶體內部 OLTP (經記憶體最佳化的資料表)
SQL Server 提供記憶體內部 OLTP 功能。 這可讓您使用經記憶體最佳化的資料表、經記憶體最佳化的資料表類型,以及原生編譯的 SQL 模組,執行對交易處理具有高輸送量和低延遲需求的工作負載。
重要
僅在 Azure SQL 受控執行個體的業務關鍵層級中支援記憶體內部 OLTP。 一般用途層級中不支援。
如果您內部部署 SQL Server 執行個體中,有經記憶體最佳化的資料表或經記憶體最佳化的資料表類型,且您想要移轉至 Azure SQL 受控執行個體,您應進行下列任一操作:
針對支援記憶體內部 OLTP 的目標 SQL 受控執行個體,選擇業務關鍵層級。
如果您想要在 Azure SQL 受控執行個體中移轉至一般用途層級,請移除經記憶體最佳化的資料表、經記憶體最佳化的資料表類型,以及與經記憶體最佳化的物件互動的原生編譯 SQL 模組,再移轉資料庫。 您可以使用以下 T-SQL 查詢,找出在移轉至一般用途層級前須移除的所有物件:
SELECT * FROM sys.tables WHERE is_memory_optimized = 1; SELECT * FROM sys.table_types WHERE is_memory_optimized = 1; SELECT * FROM sys.sql_modules WHERE uses_native_compilation = 1;
若要深入了解記憶體內部技術,請參閱使用 Azure SQL Database 和 Azure SQL 受控執行個體中的記憶體內部技術,將效能最佳化 (機器翻譯)。
進階功能
務必利用 SQL 受控執行個體中的進階雲端式功能。 舉例來說,您不須擔心管理備份,因為此服務會為您管理。 您可以還原至保留期間內的任一個時間點。 此外,您不須擔心設定高可用性,因為內建高可用性。
若要加強安全性,請考慮針對 Azure SQL 使用 Microsoft Entra 驗證、稽核、威脅偵測、數據列層級安全性和動態數據遮罩。
除了進階管理和安全性功能之外,SQL 受控執行個體還具有可協助您監視和微調工作負載的進階工具。 Azure SQL 分析可讓您集中監視大量受控執行個體。 受控執行個體中的自動微調會持續監視您 SQL 計畫執行的效能,並自動修正找到的效能問題。
部分功能只能在資料庫相容性層級變更為最新相容性層級 (150) 之後使用。
移轉資產
如需更多協助,請參閱下列針對實際移轉專案製作的資源。
資產 | 說明 |
---|---|
資料工作負載評定模型及工具 | 此工具會針對工作負載,提供建議的「最適合」目標平台、雲端整備,以及應用程式/資料庫補救等級。 為目標平台提供自動化和統一的決策程序,簡單按一下就能計算和產生報表,有助於加快評估大型資產。 |
將內部部署 SQL Server 登入移至 Azure SQL 受控執行個體的公用程式 | PowerShell 指令碼可以建立 T-SQL 命令指令碼,重新建立登入,並選取從內部部署 SQL Server 至 Azure SQL 受控執行個體的資料庫使用者。 此工具可自動將 Windows Server Active Directory 帳戶對應至 Microsoft Entra 帳戶,以及選擇性移轉 SQL Server 原生登入。 |
使用 Logman 將 Perfmon 資料收集自動化 | 您可以使用 Logman 工具,收集 Perfmon 資料 (協助您了解基準效能) 並獲得移轉目標建議。 此工具會使用 logman.exe 建立命令,該命令會建立、啟動、停止及刪除遠端 SQL Server 執行個體上設定的效能計數器。 |
資料 SQL 工程小組開發這些資源。 此小組的核心任務是為資料平台遷移專案的複雜現代化排除障礙,加速遷移至 Microsoft 的 Azure 資料平台。