你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
获取用于迁移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 虚拟机 目标的Azure SQL数据库、Azure SQL 托管实例和SQL Server的建议。 该工具可帮助你从运行本地或其他云) 的源 SQL 实例 (收集性能数据,并推荐计算和存储配置来满足工作负载的需求。
此图显示了适用于 Azure Data Studio 的 Azure SQL 迁移扩展中的 Azure 建议工作流:
注意
适用于 Azure Data Studio 的 Azure SQL 迁移扩展中的评估和 Azure 建议功能还支持在 Windows 或 Linux 上运行的源 SQL Server 实例。
先决条件
若要开始使用 Azure 建议 (预览版) 进行SQL Server数据库迁移,必须满足以下先决条件:
- 下载并安装 Azure Data Studio。
- 从 Azure Data Studio 市场安装 Azure SQL 迁移扩展。
- 确保用于连接源SQL Server实例的登录名具有最低权限。
支持的源和目标
可以为以下SQL Server版本生成 Azure 建议:
- Windows 或 Linux 支持 SQL Server 2008 及更高版本。
- 可能支持在其他云上运行SQL Server,但结果的准确性可能会有所不同
可以为以下Azure SQL目标生成 Azure 建议:
- Azure SQL 数据库
- 硬件系列:标准系列 (Gen5)
- 服务层:常规用途、业务关键、超大规模
- Azure SQL 托管实例
- 硬件系列:标准系列 (Gen5) 、Premium 系列、高级系列内存优化
- 服务层:常规用途、业务关键
- 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 | 数据库使用的缓存的总大小(以兆字节为单位) | 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 迁移向导的步骤 1 要求选择要评估的数据库集,这些数据库是唯一在建议过程中考虑的数据库。
但是,性能数据收集过程会从源SQL Server实例收集所有数据库的性能计数器,而不仅仅是从所选数据库收集性能计数器。
这意味着,通过在步骤 1 上指定不同的列表,可以使用以前收集的性能数据重复重新生成针对不同数据库子集的建议。
建议参数
有多个可配置的设置可能会影响你的建议。
选择 “编辑参数” 选项,根据需要调整这些参数。
比例系数:
此选项允许提供一个缓冲区来应用于每个性能维度。 此选项考虑了以下问题:季节性使用情况、性能历史记录过短以及将来的使用量可能会增加。 例如,如果确定有一个 4 vCore CPU 需求,且比例因子为 150%,则真正的 CPU 需求将为 6 vCore。默认比例因子卷为 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 混合权益)而异。 若要获取价格估算,请使用 Azure 定价计算器,或在 Azure Migrate 中创建 SQL 评估 。
- 不支持使用基于 DTU 的购买模型Azure SQL数据库的建议。
- 目前不支持针对 Azure SQL 数据库无服务器计算层和弹性池的 Azure 建议。
- 目前,不支持使用高级 SSD v2 在 Azure 虚拟机上SQL Server的 Azure 建议。
疑难解答
- 未生成建议
- 如果未生成任何建议,则这种情况可能意味着未识别任何可以完全满足源实例性能要求的配置。 为了了解特定大小、服务层级或硬件系列被取消资格的原因:
- 通过转到“帮助 > 显示所有命令 > 打开扩展日志文件夹”,从 Azure Data Studio 访问日志
- 导航到 Microsoft.mssql > SqlAssessmentLogs > 打开 SkuRecommendationEvent.log
- 日志包含已评估的每个潜在配置的跟踪,以及它被视为合格配置的原因:
- 尝试在启用弹性建议的情况下重新生成 建议 。 此选项使用替代建议模型,该模型利用针对现有云上客户的个性化性价比分析。
- 如果未生成任何建议,则这种情况可能意味着未识别任何可以完全满足源实例性能要求的配置。 为了了解特定大小、服务层级或硬件系列被取消资格的原因: