Share via


取得移轉您的 SQL Server 資料庫的 Azure 建議

Azure Data Studio 的 Azure SQL 移轉延伸模組可協助評估您的資料庫需求、為 Azure 資源取得合適大小的 SKU 建議,以及將您的 SQL Server 資料庫移轉至 Azure。

了解如何使用此統一體驗,收集來源 SQL Server 執行個體的效能資料,以取得 Azure SQL 目標的合適大小 Azure 建議。

概觀

在移轉至 Azure SQL 之前,您可以使用 Azure Data Studio 中的 SQL 移轉延伸模組,協助您針對 Azure SQL Database、Azure SQL 受控執行個體和 Azure 虛擬機上的 SQL Server 這些目標產生合適大小的建議。 此工具可協助您收集來源 SQL 執行個體 (執行於內部部署或其他雲端) 的效能資料,並建議可滿足符合工作負載需求的計算和記憶體組態。

此圖展示適用於 Azure Data Studio 的 Azure SQL 移轉延伸模組中的 Azure 建議工作流程:

Diagram that shows the workflow of the SKU recommendation process.

注意

適用於 Azure Data Studio 的 Azure SQL 移轉延伸模組中的評量和 Azure 建議功能支援在 Windows 或 Linux 上執行的來源 SQL Server 執行個體。

必要條件

若要開始使用 SQL Server 資料庫移轉的 Azure 建議,您必須符合下列必要條件:

支援的來源與目標

您可以針對下列 SQL Server 版本產生 Azure 建議:

  • 支援 Windows 或 Linux 上的 SQL Server 2008 和更新版本。
  • 在其他雲端上執行的 SQL Server 可能有支援,但結果的正確性可能有落差

您可以針對下列 Azure SQL 目標產生 Azure 建議:

  • Azure SQL Database
    • 硬體系列:標準系列 (Gen5)
    • 服務層級:一般用途、業務關鍵、超大規模資料庫
  • Azure SQL 受控執行個體
    • 硬體系列:標準系列 (Gen5)、進階系列、進階系列記憶體最佳化
    • 服務層級:一般用途、業務關鍵
  • Azure 虛擬機上的 SQL Server
    • VM 系列:一般用途、記憶體最佳化
    • 記憶體系列:進階 SSD

效能資料集合

在產生建議之前,必須先收集來源 SQL Server 執行個體的效能資料。 在此資料收集步驟中,系統會查詢 SQL Server 執行個體的多個動態系統檢視 (DMV) 以擷取工作負載的效能特性。 此工具每 30 秒會擷取一次計量,包括 CPU、記憶體、儲存體以及 IO 使用量,並將性能計數器儲存為本機機器的一組 CSV 檔案。

執行個體層級

每個 SQL Server 實體會收集此效能資料一次:

效能維度 描述 動態管理檢視 (DMV)
SqlInstanceCpuPercent SQL Server 處理序使用的 CPU 數量 (百分比) sys.dm_os_ring_buffers
PhysicalMemoryInUse SQL Server 處理序的整體記憶體使用量 sys.dm_os_process_memory
MemoryUtilizationPercentage SQL Server 的記憶體使用率 sys.dm_os_process_memory

資料庫層級

效能維度 描述 動態管理檢視 (DMV)
DatabaseCpuPercent 資料庫所使用的 CPU 總百分比 sys.dm_exec_query_stats
CachedSizeInMb 資料庫所使用的總計快取大小 (MB) sys.dm_os_buffer_descriptors

檔案層級

效能維度 描述 動態管理檢視 (DMV)
ReadIOInMb 從這個檔案讀取的 MB 總計 sys.dm_io_virtual_file_stats
WriteIOInMb 寫入此檔案的 MB 總數 sys.dm_io_virtual_file_stats
NumOfReads 此檔案上發出的讀取總數 sys.dm_io_virtual_file_stats
NumOfWrites 在此檔案上發出的寫入總數 sys.dm_io_virtual_file_stats
ReadLatency 此檔案上的 IO 讀取延遲 sys.dm_io_virtual_file_stats
WriteLatency 此檔案上的 IO 寫入延遲 sys.dm_io_virtual_file_stats

產生建議最低需要收集 10 分鐘的資料,但為了準確評估您的工作負載,建議給予更充足的時間執行資料收集,以擷取尖峰和離峰使用量。

若要初始化資料收集程序,請從連線到 Azure Data Studio 中的來源 SQL 執行個體開始,然後啟動 SQL 移轉精靈。 在步驟 2 上,選取 [取得 Azure 建議]。 選取 [立即收集效能資料],然後選取機器上用於儲存收集資料的資料夾。

Screenshot that shows the wizard pane to collect performance data for SKU recommendations.

重要

資料收集程序會執行 10 分鐘,以產生第一個建議。 當您的作用中資料庫工作負載反映類似生產案例的使用量時,務必開始資料收集程序。

產生第一個建議之後,您可以繼續執行資料收集程序來精簡建議。 如果您的使用模式會隨著時間而有所不同,此選項特別有用。

當您選取 [開始] 之後,便會開始資料收集程序。 系統每 10 分鐘會彙總收集的資料點,並將每個計數器的最大值、平均數和變異數寫入三個一組的 CSV 檔案。

您通常會在所選資料夾中看到具有下列尾碼的一組 CSV 檔案:

  • SQLServerInstance_CommonDbLevel_Counters.csv:包含有關資料庫檔案配置和中繼資料的靜態設定資料。
  • SQLServerInstance_CommonInstanceLevel_Counters.csv:包含有關伺服器執行個體硬體設定的靜態資料。
  • SQLServerInstance_PerformanceAggregated_Counters.csv:包含經常更新的彙總效能資料。

在此期間,請將 Azure Data Studio 保持開啟狀態,不過您可以繼續執行其他作業。 若要停止資料收集程式,您可以隨時返回此頁面,然後選取 [停止資料收集]

產生合適大小的建議

如果您已經在上一個工作階段收集效能資料,或使用其他工具 (例如 Data Migration Assistant),您可以選取 [我已經擁有效能資料] 的選項來匯入任何現有的效能資料。 繼續選取儲存效能資料 (三個 .csv 檔案) 的資料夾,然後選取 [開始] 以起始建議程序。

Screenshot that shows the pane to import performance data for a SKU recommendation.

注意

SQL 移轉精靈的其中一個步驟會要求您選取一組要評估的資料庫,而這些是建議程序期間唯一要考慮的資料庫。

不過,效能資料收集程序會從來源 SQL Server 執行個體收集所有資料庫的性能計數器,而不僅僅是選取的資料庫。

這表示先前收集的效能資料可用來重複產生不同資料庫子集的建議,方法是在步驟 1 時指定不同的清單。

建議參數

有幾個可調整的設定可能會影響您的建議。

Screenshot that shows the recommendation parameters section.

選取 [編輯參數] 選項,根據您的需求調整這些參數。

Screenshot that shows the different recommendation parameters.

  • 比例因素
    此選項可讓您提供套用至每個效能維度的緩衝區。 此選項會考量多個問題,例如季節性使用量、簡短的效能歷程記錄,以及未來可能增加的使用量。 例如,如果您判斷四個虛擬核心 CPU 需求有 150% 的比例因素,則真正的 CPU 需求為六個虛擬核心。

    預設縮放因素量為 100%。

  • 百分比使用率
    彙總要當做效能資料使用的資料點百分位數。

    預設值為第 95 個百分位數。

  • 啟用預覽功能
    此選項將允許建議組態,但可能尚未提供給所有區域中的所有使用者。

    此選項預設為關閉。

  • 啟用彈性建議

    此選項會使用替代的建議模型,該模型會利用針對現有雲端客戶的個人化價格效能分析。

    此選項預設為關閉。

重要

如果您關閉 Azure Data Studio,資料收集程序就會終止。 收集到該點的資料會儲存在您的資料夾中。

如果您在資料收集進行時關閉 Azure Data Studio,請使用下列其中一個選項來重新開始資料收集:

  • 重新開啟 Azure Data Studio,並匯入儲存在您的本機資料夾中的資料檔案。 然後,從收集的資料產生建議。
  • 重新開啟 Azure Data Studio,然後使用移轉精靈再次開始資料收集。

最低權限

為查詢效能資料收集所需的系統檢視,此工作所使用的 SQL Server 登入需要特定權限。 您可以使用下列指令碼建立足以評量和效能資料收集的最低權限使用者:

-- Create a login to run the assessment
USE master;
GO

CREATE LOGIN [assessment] WITH PASSWORD = '<STRONG PASSWORD>';

-- Create user in every database other than TempDB and model and provide minimal read-only permissions
EXECUTE sp_MSforeachdb '
   USE [?];
   IF (''?'' NOT IN (''TempDB'',''model''))  
   BEGIN TRY
      CREATE USER [assessment] FOR LOGIN [assessment]
   END TRY
   BEGIN CATCH
      PRINT ERROR_MESSAGE()
   END CATCH'
   
EXECUTE sp_MSforeachdb '
   USE [?];
   IF (''?'' NOT IN (''tempdb'',''model''))  
   BEGIN TRY
      GRANT SELECT ON sys.sql_expression_dependencies TO [assessment]
   END TRY
   BEGIN CATCH
      PRINT ERROR_MESSAGE()
   END CATCH'
   
EXECUTE sp_MSforeachdb '
   USE [?];
   IF (''?'' NOT IN (''tempdb'',''model''))  
   BEGIN TRY
      GRANT VIEW DATABASE STATE TO [assessment]
   END TRY
   BEGIN CATCH
      PRINT ERROR_MESSAGE()
   END CATCH'

-- Provide server level read-only permissions
GRANT SELECT ON sys.sql_expression_dependencies TO [assessment];
GRANT SELECT ON sys.sql_expression_dependencies TO [assessment];
GRANT EXECUTE ON OBJECT::sys.xp_regenumkeys TO [assessment];
GRANT VIEW DATABASE STATE TO assessment;
GRANT VIEW SERVER STATE TO assessment;
GRANT VIEW ANY DEFINITION TO assessment;

-- Provide msdb specific permissions
USE msdb;
GO

GRANT EXECUTE ON [msdb].[dbo].[agent_datetime] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysjobsteps] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[syssubsystems] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysjobhistory] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[syscategories] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysjobs] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysmaintplan_plans] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[syscollector_collection_sets] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysmail_profile] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysmail_profileaccount] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysmail_account] TO [assessment];

-- USE master;
-- GO
-- EXECUTE sp_MSforeachdb 'USE [?]; BEGIN TRY DROP USER [assessment] END TRY BEGIN CATCH SELECT ERROR_MESSAGE() END CATCH';
-- DROP LOGIN [assessment];

不支援的案例和限制

  • Azure 建議不包含價格估計值,因為此情況可能會因區域、貨幣和折扣而有所不同,例如 Azure Hybrid Benefit。 若要取得價格估計值,請使用 Azure 定價計算機,或在 Azure Migrate 中建立 SQL 評量
  • 使用以 DTU 為基礎的購買模型的 Azure SQL Database 不支援建議。
  • 目前 Azure SQL Database 無伺服器計算層和彈性集區不支援 Azure 建議。

疑難排解

  • 未產生任何建議
    • 如果未產生任何建議,這種情況可能表示沒有識別到任何組態可完全滿足來源執行個體的效能需求。 若要查看特定大小、服務層級或硬體系列遭取消資格的原因:
      • 前往 [說明] > [顯示所有命令] > [開啟擴充記錄資料夾],以從 Azure Data Studio 存取記錄
      • 瀏覽至 Microsoft.mssql > SqlAssessmentLogs > 開啟SkuRecommendationEvent.log
      • 記錄包含每個已評估潛在組態的追蹤,及其為何視為/未視為合格組態的原因:Screenshot that shows SKU recommendations log.
    • 嘗試啟用彈性建議並重新產生建議。 此選項會使用替代的建議模型,該模型會利用針對現有雲端客戶的個人化價格效能分析。

下一步