本文介绍如何使用 Azure Arc 中的 SQL Server 迁移将 SQL Server 数据库迁移到 Azure SQL 托管实例时可能会遇到的常见问题。
注释
可以直接向 产品组提供有关迁移体验的反馈。
Arc 代理版本
在 Azure Arc 中使用 SQL Server 迁移时,某些功能需要最低版本的 Arc 代理。 Arc 代理是一个可执行文件,它与 SQL Server 实例一起运行,以提供与 Azure 的连接。 始终使 Arc 代理版本保持最新状态,以获取最新的修补程序和更新。
启用 自动更新 后,Arc 代理会自动保持最新状态。 但是,当 Arc 代理的新版本推出时,更新可能需要几天时间才能到达所有服务器。 可以通过 Azure 门户或命令行接口 手动执行按需 Arc 代理更新 来加速该过程。
如果在 Azure 门户中访问 数据库迁移 窗格时看到以下错误,则需要将 Arc 代理升级到受支持的版本:
To enable migration and monitoring capabilities,
please update your Azure Arc agent extension "WindowsAgentSQLServer" to the latest version.
Arc 代理问题
如果遇到 Arc 代理的问题(例如运行不正常的扩展状态或断开连接的 SQL Server 实例),请使用以下扩展故障排除指南: 排查 SQL Server 的 Azure 扩展问题。
迁移就绪情况评估问题
系统在每个星期天晚上 11 点(23:00)本地运行 迁移就绪评估。 Azure Arc 新启用的 SQL Server 实例的评估可能需要几天才能显示在 Azure 门户中。 使用 运行评估 来启动按需评估。 评估将在几分钟后显示。
如果 Azure 门户中的数据库迁移就绪情况评估页为空,则计划评估可能未运行,或者 SQL Server 实例上运行评估时出现问题。 禁用 Arc 代理会阻止评估程序的运行。 确保已启用 Arc 代理。 有关详细信息,请参阅 “更改评估设置”。
请考虑以下已知问题:
- 启用并使用
xp_cmdshell时,评估会为 SQL 托管实例记录一个警告,因为你仍然可以迁移数据库。 但是,它会中断专门使用xp_cmdshell的对象的功能。 使用此评估中提供的修正指导意见来缓解该问题。
如果遇到以下任何问题 ,请联系Microsoft支持 部门:
- 即使在计划的时间之后,评估报告也不会显示在门户中。
- 在收集数据一周后,性能数据可用性不会增加。
查看 Azure 活动日志以查找迁移问题
从资源访问时,Azure 门户中的活动日志提供对 Azure 中发生的资源级事件的见解。 此见解包括有关何时修改或删除资源的信息,以及有关服务运行状况和其他重要事件的详细信息。
在 Azure Arc 中使用 SQL Server 迁移排查到 Azure SQL 托管实例的迁移问题时,活动日志是一种有价值的资源,用于识别问题并了解导致问题的事件序列。
若要访问 Azure 门户中由 Azure Arc 资源启用的 SQL Server 实例的活动日志,请执行以下步骤:
转到 Azure 门户中 由 Azure Arc 资源启用的 SQL Server 实例 。
从资源菜单中选择 活动日志 :
还可以通过选择顶部导航栏的通知钟图标,然后选择 活动日志中的“更多事件”来访问订阅级别活动日志,以获取订阅中所有资源的事件的更广泛视图:
从活动日志中选择一个事件,以打开事件详细信息窗格。 使用 “摘要 ”和 “JSON ”选项卡查看有关事件的详细信息,包括特定的错误消息。 如果创建支持请求,请尽可能详细地传达此信息。
托管实例链接迁移问题
本部分介绍在通过 Azure Arc 的 SQL Server 迁移迁移到 Azure SQL 托管实例时,托管实例链接功能的一些常见问题:
- 安装的 Service Pack 不正确
- AlwaysOn 可用性组功能已禁用
- 使用 SQL Server 2016
- 网络连接问题
- 启动托管实例链接迁移作业时的警告
- 现有链接的已知互作性问题
- 使用 XE Profiler 进行详细故障排除
安装的 Service Pack 不正确
请确保已安装 相应的 SQL Server Service Pack(SP)或累积更新(CU)。
可以通过在 SQL Server 实例上运行以下 T-SQL 命令来检查正确的版本:
EXEC sp_certificate_add_issuer @CERTID, N'*.database.windows.net'
如果收到 SQL Server 找不到存储过程 sp_certificate_add_issuer的错误,则可能未安装正确的服务包(例如 Azure Connect 功能包)。 安装必要的维护服务更新,然后重试。
AlwaysOn 可用性组功能已禁用
确保 SQL Server 实例上 启用了 AlwaysOn 可用性组功能 。 托管实例链接要求启用 AlwaysOn 可用性组功能才能获得适当的功能。
使用 SQL Server 2016
对于 SQL Server 2016(13.x),必须完成 SQL Server 2016 先决条件准备链接中所述的额外步骤。 此链接支持的 SQL Server 2017(14.x)及更高版本不需要执行这些额外步骤。
网络连接问题
SQL Server 环境和 Azure SQL 托管实例之间的成功连接对于托管实例链接功能至关重要。 如果遇到网络连接问题,请考虑以下几点:
- 托管实例链接无法通过公共网络工作,因此 SQL Server 实例与 Azure SQL 托管实例之间的连接必须是专用的,例如使用 VPN。
- 可以直接从 Azure 门户测试连接,作为迁移过程的一部分。 如果连接测试在门户中成功,但无法创建链接,请检查 活动日志 以了解失败的详细信息。 还可以使用 Transact-SQL 和 SQL Server 代理 手动测试连接 。
- 检查网络上是否有任何企业防火墙。 尽管网络连接似乎可以正常工作,但防火墙可以阻止 SQL Server 用于分布式可用性组的特定类型的数据包。 验证防火墙是否未阻止或筛选数据包类型。
启动托管实例链接迁移作业时的警告
启动托管实例链接迁移作业时,可能会出现以下警告。 尽管存在以下警告,但仍可继续迁移:
Warning: Database Mirroring Endpoint does not existWarning: Database Mirroring Endpoint is not secure with a certificateWarning: Database Mirroring Endpoint is not enabledWarning: Database Mirroring Endpoint encryption algorithm is not set to AES
这些警告当前是一个已知问题,迁移过程会自动解决这些问题,以便继续迁移。
调查其他警告。 您需要在开始迁移之前解决某些警告,而某些警告则可以在迁移完成后处理。
现有链接的已知互操作性问题
通过 Azure 门户配置用于迁移的链接与通过 SQL Server Management Studio(SSMS)或 Transact-SQL(T-SQL)手动创建的现有链接不兼容。 如果链接已存在,则无法通过 Azure 门户创建新链接。
如果 SQL Server 源或 Azure SQL 托管实例目标上已存在链接,则需要先执行以下步骤,然后才能通过 Azure 门户在该源和目标之间创建新链接:
- 使用 Remove-AzSqlInstanceLink 或 az sql mi link delete 从 Azure Cloud Shell 或通过已登录 Azure 上下文的计算机,从 SQL 托管实例手动删除链接。
- 使用 DROP AVAILABILITY GROUP 与链接关联的分布式可用性组的名称,从 SQL Server 手动删除链接。
- 使用 DROP CERTIFICATE 从 SQL Server 实例中删除所有与链接相关的证书。 需要删除的证书通常包含以下值:
DigiKey PKI、Microsoft PKI、endpoint和database.windows.net。 可用于SELECT * FROM sys.certificates列出 SQL Server 上的所有证书。 - 请使用 Remove-AzSqlInstanceServerTrustCertificate 或 az sql mi partner-cert delete,从 Azure Cloud Shell 或已使用 Azure 上下文登录的计算机中, 删除 SQL Managed Instance 中所有与链接相关的证书。 可以使用 Get-AzSqlInstanceServerTrustCertificate 或 az sql mi partner-cert show 列出 SQL 托管实例上的现有身份验证证书。
- 前面的步骤清除为手动创建的链接生成的所有与链接相关的身份验证证书。 如果不在本地使用现有可用性组,请考虑使用 DROP ENDPOINT 删除现有的数据库镜像终结点。 您可以使用
SELECT * FROM sys.endpoints列出 SQL Server 上的所有现有终结点。 必须先删除与终结点关联的证书,然后才能删除终结点。
使用 XE Profiler 进行详细故障排除
有关链接问题的详细故障排除,请使用 XE Profiler。
日志重播服务迁移问题
本部分列出了通过 Log Replay Service (LRS) 进行迁移时可能会遇到的常见问题:
无法列出 Azure Blob 存储中的目录
如果您在 Azure 门户的“Unable to list directories”页面上选择目录时看到错误消息,这表明当前登录门户的用户没有被分配到存储帐户的存储 Blob 数据读取者角色。
授予用户对存储帐户的访问权限 ,以解决该问题。
目录中未找到任何结果
如果在 Azure 门户中的“No results were found in directory”页上选择目录时看到消息,则 Azure Blob 存储容器中没有可用的数据库备份。 若要解决此问题,请将完整数据库备份上传到 Azure Blob 存储。
检查文件还原状态
若要检查在迁移期间检测到、排队、跳过或无法还原的文件数,请使用 Azure 门户中的“监视和切换”页。 迁移开始后,转到 “监视和割接” 页面,然后选择您正在迁移的数据库以查看该数据库的迁移详细信息。
错误 2009 - 未正确设置托管标识
如果迁移成功启动,但随后因错误 2009 - managed identity is not set up properly 而失败,这是因为托管实例的主身份标识没有被分配到 Azure Blob 存储帐户的 存储 Blob 数据读取者 权限。
授予对存储帐户的托管标识访问权限 以解决此问题。 验证适当的标识(默认托管标识或用户定义的自定义标识)是否具有所需的权限,或者标识自最初授予权限后未更改。 如果标识已更改,请向新标识授予适当的权限以解决该问题。
使用 DMS 工具排查迁移问题
在 Azure Arc 中启动 LRS 迁移作业会自动创建数据库迁移服务(DMS)迁移作业,以便可以在 Azure 门户中使用 Azure 数据库迁移服务 来查看有关迁移作业的其他详细信息。
若要查看 DMS 中的 LRS 迁移作业详细信息,请执行以下步骤:
在 Azure 门户中转到 Azure 数据库迁移服务 。
选择 “所有资源 ”,然后选择与 LRS 迁移关联的 DMS 迁移作业以打开迁移详细信息页:
在迁移详细信息页上,选择“ 监视迁移 ”以查看使用 LRS 为特定实例迁移的数据库的状态。 选择 “成功”、“ 已取消”或 “错误” 以查看有关状态的更多详细信息。
访问此页面的另一种方法是,首先将 Azure 数据库迁移服务资源添加到包含目标 SQL 托管实例的资源组中,然后通过 Azure Arc 启动迁移。
删除迁移作业
LRS 迁移作业在完成后(无论成功或失败)会在“监视和切换”页上停留 28 天。 如果想要更快地从监视页中清除作业,可以手动删除这些作业。
若要手动删除作业,请转到 与 LRS 迁移关联的 DMS 迁移作业 ,如上一部分所述。 选择要删除的迁移作业,然后使用 “删除 垃圾桶”按钮删除作业。 通过选中“选中此框以确认删除”进行确认。 此操作将从 Azure Arc 中的 “监视和切换” 页面中清除作业。
联系微软
你可以联系Microsoft,打开支持票证,其中包含你拥有的问题或直接向产品组提供反馈。
联系支持人员
使用 https://aka.ms/azure-support 进入 Azure 门户中的 “帮助 + 支持” 页,然后按照以下步骤提交与迁移相关的支持票证:
- 选择“ 创建支持请求 ”以打开 “支持 + 故障排除 ”窗格。
- 在文本字段中键入
migration,然后在你遇到问题的哪个服务下选择“以上皆非” - 从“选择服务”下拉列表中,选择
SQL Server enabled by Azure Arc,然后使用“下一步”即可继续进行。 - 从下拉列表中选择订阅。
- 从“资源”下拉列表中选择 Azure Arc 资源启用的 SQL Server 实例,然后选择“下一步”。
- 在“是否遇到以下问题?”磁贴中选择“迁移问题”,然后选择“下一步”。
- 在“支持 + 故障排除”窗格中的顶部导航栏中选择“创建支持请求”以打开支持票证表单。
- 使用以下 问题子类型 值将问题路由到相应的支持队列:
- 评估:如果您在迁移准备情况评估中遇到问题。
- LRS 数据迁移:如果您在 日志重播服务(LRS)迁移时遇到问题。
- MI 链接数据迁移:如果在 托管实例链接迁移时遇到问题。
- 监控和切换:如果在监控迁移或切换时遇到问题。
- 目标预配:如果在预配目标 Azure SQL 托管实例时遇到问题。
- 使用 “下一步” 继续完成支持请求表单的剩余步骤,然后选择“ 创建 ”以提交支持请求。
向产品组提供反馈
你可以向产品组提供反馈,以帮助改善迁移体验。 使用以下链接提交反馈: