取得 Azure 建議以移轉 SQL Server 資料庫
適用於 Azure Data Studio 的 Azure SQL 移轉延伸模組可協助您評估資料庫需求、取得 Azure 資源的正確大小 SKU 建議,以及將 SQL Server 資料庫移轉至 Azure。
瞭解如何使用此統一體驗,從來源 SQL Server 實例收集效能數據,以取得 Azure SQL 目標的正確大小 Azure 建議。
概觀
在移轉至 Azure SQL 之前,您可以使用 Azure Data Studio 中的 SQL 移轉延伸模組,協助您為 Azure SQL 資料庫、Azure SQL 受控執行個體 和 Azure 虛擬機器 目標上的 SQL Server 產生正確的大小建議。 此工具可協助您從來源 SQL 實例收集效能資料(執行內部部署或其他雲端),並建議計算和記憶體組態以符合工作負載的需求。
此圖顯示適用於 Azure Data Studio 的 Azure SQL 移轉延伸模組中的 Azure 建議工作流程:
注意
Azure Data Studio 的 Azure SQL 移轉延伸模組中的評定和 Azure 建議功能支援在 Windows 或 Linux 上執行的來源 SQL Server 實例。
必要條件
若要開始進行 SQL Server 資料庫移轉的 Azure 建議,您必須符合下列必要條件:
- 下載並安裝 Azure Data Studio。
- 從 Azure Data Studio Marketplace 安裝 Azure SQL 移轉延伸模組 。
- 請確定您用來連接來源 SQL Server 實例的登入具有 最低許可權。
支援的來源與目標
您可以針對下列 SQL Server 版本產生 Azure 建議:
- 支援 Windows 或 Linux 上的 SQL Server 2008 和更新版本。
- 可能支援在其他雲端上執行的 SQL Server,但結果的正確性可能會有所不同
您可以針對下列 Azure SQL 目標產生 Azure 建議:
- Azure SQL 資料庫
- 硬體系列:標準系列 (Gen5)
- 服務層級:一般用途、業務關鍵、超大規模資料庫
- Azure SQL 受控執行個體
- 硬體系列:標準系列(Gen5)、進階版 系列、進階版 系列記憶體優化
- 服務層級:一般用途、業務關鍵
- Azure 虛擬機上的 SQL Server
- VM 系列:一般用途、記憶體優化
- 儲存體 系列:進階版 SSD
效能數據收集
必須先從來源 SQL Server 實例收集效能數據,才能產生建議。 在此數據收集步驟中,會查詢 SQL Server 實例的多個 動態系統檢視 (DMV),以擷取工作負載的效能特性。 此工具會擷取計量,包括 CPU、記憶體、記憶體、記憶體和 IO 使用量每 30 秒,並將性能計數器儲存到本機計算機作為一組 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 建議]。 選取 [立即收集效能數據],然後選取計算機上將儲存所收集數據的資料夾。
重要
數據收集程式會執行 10 分鐘,以產生第一個建議。 當您的作用中資料庫工作負載反映類似生產案例的使用方式時,請務必啟動數據收集程式。
產生第一個建議之後,您可以繼續執行數據收集程式來精簡建議。 如果您的使用模式隨著時間而有所不同,這個選項特別有用。
當您選取 [開始] 之後,數據收集程式就會開始。 每10分鐘,會匯總收集的數據點,並將每個計數器的最大值、平均數和變異數寫入一組三個CSV檔案。
您通常會在選取的資料夾中看到一組 CSV 檔案,其中包含下列後綴:
SQLServerInstance
_CommonDbLevel_Counters.csv:包含資料庫檔案配置和元數據的相關靜態組態數據。SQLServerInstance
_CommonInstanceLevel_Counters.csv:包含伺服器實例硬體組態的相關靜態數據。SQLServerInstance
_PerformanceAggregated_Counters.csv:包含經常更新的匯總效能數據。
在此期間,讓 Azure Data Studio 保持開啟狀態,不過您可以繼續執行其他作業。 您可以隨時返回此頁面,然後選取 [停止數據收集] 來停止數據收集程式。
產生正確大小的建議
如果您已經從上一個會話收集效能數據,或使用其他工具(例如資料庫 移轉小幫手),您可以選取我已經擁有效能數據的選項來匯入任何現有的效能數據。 繼續選取儲存效能數據的資料夾(三個 .csv 檔案),然後選取 [ 開始 ] 以起始建議程式。
注意
SQL 移轉精靈的步驟之一會要求您選取一組要評估的資料庫,而這些都是建議程序期間唯一要考慮的資料庫。
不過,效能數據收集程式會從來源 SQL Server 實例收集所有資料庫的性能計數器,而不只是選取的資料庫。
這表示先前收集的效能數據可用來重複重新產生不同資料庫子集的建議,方法是在步驟一上指定不同的清單。
建議參數
有多個可設定的設定可能會影響您的建議。
選取 [ 編輯參數] 選項,根據您的需求調整這些參數。
縮放比例:
此選項可讓您提供緩衝區,以套用至每個效能維度。 此選項適用於季節性使用量、短期效能歷程記錄,以及未來使用量可能會增加的問題。 例如,如果您判斷四個虛擬核心 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 資料庫 建議。
- 目前不支援 Azure SQL 資料庫 無伺服器計算層和彈性集區的 Azure 建議。
疑難排解
- 未產生任何建議
下一步
- 瞭解如何 使用 Azure Data Studio 中的 Azure SQL 移轉延伸模組來移轉資料庫。