本文可帮助你排查使用 Azure Arc 中的 SQL Server 迁移功能将 SQL Server 数据库迁移到 Azure SQL 托管实例时可能遇到的常见问题。
注释
可以直接向 产品组提供有关迁移体验的反馈。
Arc 代理版本
在Azure Arc中使用SQL Server迁移时,某些功能需要最低版本的 Arc 代理。 Arc 代理是一个可执行文件,它与SQL Server实例一起运行,以提供与Azure的连接。 始终使 Arc 代理版本保持最新状态,以获取最新的修补程序和更新。
启用 自动更新 后,Arc 代理会自动保持最新状态。 但是,当 Arc 代理的新版本推出时,更新可能需要几天时间才能到达所有服务器。 可以通过 Azure 门户或命令行接口手动执行按需 Arc 代理更新,以便加快此过程。
如果在Azure门户中访问 Database 迁移窗格时看到以下错误,则需要将 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 Arc资源启用的SQL Server实例Azure门户中的活动日志,请执行以下步骤:
转到 Azure 门户中由 Azure Arc 资源启用的 SQL Server 实例。
从资源菜单中选择 活动日志 :
在 Azure 门户中为 SQL Server 实例资源突出显示的活动日志的屏幕截图。
还可以通过选择顶部导航栏的通知钟图标,然后选择 活动日志中的“更多事件”来访问订阅级别活动日志,以获取订阅中所有资源的事件的更广泛视图:
在 Azure 门户中突出显示的通知铃图标的截图。
从活动日志中选择一个事件,以打开事件详细信息窗格。 使用 “摘要 ”和 “JSON ”选项卡查看有关事件的详细信息,包括特定的错误消息。 如果创建支持请求,请尽可能详细地传达此信息。
Azure 门户中不可用的新数据库
尝试选择数据库进行迁移时,最近添加到SQL Server实例的数据库可能不会立即显示在Azure门户中。 这是因为 Arc 代理需要大约一个小时才能自动刷新数据库列表。
若要解决此问题,可以重启 Arc 服务以触发数据库列表的即时刷新。
在Windows,在承载SQL Server实例的服务器上,在提升的命令提示符下使用以下命令:
Restart-Service himds
Restart-Service gcarcservice
Restart-Service extensionservice
等待服务重启,然后使用以下命令验证服务是否正在运行:
& "$env:ProgramW6432\AzureConnectedMachineAgent\azcmagent.exe" show
在 Linux 服务器上,在提升的终端中使用以下命令:
sudo systemctl restart himdsd
sudo systemctl restart gcad
sudo systemctl restart extd
等待服务重启,然后使用以下命令验证服务是否正在运行:
azcmagent show
转到 SQL Server 实例的 Azure 门户中的 Databases 页,然后选择 Refresh 以查看新添加的数据库。 现在可以选择这些新数据库进行迁移。
托管实例链接迁移问题
本部分介绍在Azure Arc中通过SQL Server迁移迁移到Azure SQL 托管实例时托管实例链接功能的一些常见问题:
- 安装的 Service Pack 不正确
- AlwaysOn 可用性组功能已禁用
- 使用 SQL Server 2016
- 网络连接问题
- 启动托管实例链接迁移作业时的警告
- 现有链接的已知互作性问题
- 使用 XE Profiler 进行详细故障排除
安装的 Service Pack 不正确
请确保已安装 appropriate 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实例上启用 Always On 可用性组功能。 托管实例 链接要求启用 Always On 可用性组功能以实现正确的功能。
使用 SQL Server 2016
对于 SQL Server 2016(13.x),必须完成链接的 Prepare 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 Context 登录的计算机,手动删除 SQL 托管实例中的链接。
- 使用 DROP AVAILABILITY GROUP 指令,手动从 SQL Server 中删除与该链接关联的分布式可用性组的名称。
- 使用
DROP CERTIFICATE0 从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 Context 登录的计算机从 SQL 托管实例 中删除所有链接相关的证书。 可以使用 Get-AzSqlInstanceServerTrustCertificate 或 az sql mi partner-cert show列出SQL 托管实例上的现有身份验证证书。
- 前面的步骤清除为手动创建的链接生成的所有与链接相关的身份验证证书。 如果不在本地使用现有可用性组,请考虑使用 DROP ENDPOINT 删除现有的数据库镜像终结点。 可以使用
SELECT * FROM sys.endpoints列出 SQL Server 上的所有现有 Endpoint。 必须先删除与终结点关联的证书,然后才能删除终结点。
使用 XE Profiler 进行详细故障排除
有关链接问题的详细故障排除,请使用 XE Profiler。
日志重播服务迁移问题
本部分列出了通过 Log Replay Service (LRS) 进行迁移时可能会遇到的常见问题:
无法在 Azure Blob 存储 - 目录中未找到任何结果
- 检查文件还原状态
- 错误 2009 - 未正确设置托管标识
- 使用 DMS 排查迁移问题
- 删除迁移作业
无法列出Azure Blob 存储中的目录
如果在 Azure 门户中选择 Unable to list directories 页上的目录时看到错误消息,则当前登录到门户的用户没有分配给存储帐户的 Storage Blob 数据读取者角色。
授予用户对存储帐户的访问权限 ,以解决该问题。
目录中未找到任何结果
如果在Azure门户中选择No results were found in directory页上的目录时看到的消息,Azure Blob 存储容器中没有可用的数据库备份。 若要解决此问题,请将完整数据库备份上传到 Azure Blob 存储。
检查文件还原状态
若要检查在迁移过程中检测到、排队、跳过或无法恢复的文件数,请使用 Azure 门户中的 监控和切换页。 迁移开始后,转到 “监视和割接” 页面,然后选择您正在迁移的数据库以查看该数据库的迁移详细信息。
错误 2009 - 未正确设置托管标识
如果迁移成功启动,但随后失败并出现错误2009 - managed identity is not set up properly,则托管实例的主要标识没有被赋予 Azure Blob 存储帐户的 Storage Blob 数据读取者权限。
授予对存储帐户的托管标识访问权限 以解决此问题。 验证适当的标识(默认托管标识或用户定义的自定义标识)是否具有所需的权限,或者标识自最初授予权限后未更改。 如果标识已更改,请向新标识授予适当的权限以解决该问题。
使用 DMS 工具排查迁移问题
在 Azure Arc中启动 LRS 迁移作业会自动创建数据库迁移服务 (DMS) 迁移作业,以便可以在 Azure 门户中使用 Azure 数据库迁移服务 来查看有关迁移作业的其他详细信息。
若要查看 DMS 中的 LRS 迁移作业详细信息,请执行以下步骤:
在 Azure 门户中转到 Azure 数据库迁移服务。
选择 “所有资源 ”,然后选择与 LRS 迁移关联的 DMS 迁移作业以打开迁移详细信息页:
在迁移详细信息页上,选择“ 监视迁移 ”以查看使用 LRS 为特定实例迁移的数据库的状态。 选择 “成功”、“ 已取消”或 “错误” 以查看有关状态的更多详细信息。
访问此页面的另一种方法是在迁移通过Azure Arc 启动后,通过资源组中包含目标SQL 托管实例的 Azure 数据库迁移服务 资源进行访问。
删除迁移作业
LRS 迁移作业在完成后(无论成功或失败)会在“监视和切换”页上停留 28 天。 如果想要更快地从监视页中清除作业,可以手动删除这些作业。
若要手动删除作业,请转到 与 LRS 迁移关联的 DMS 迁移作业 ,如上一部分所述。 选择要删除的迁移作业,然后使用 “删除 垃圾桶”按钮删除作业。 通过选中“选中此框以确认删除”进行确认。 此操作从 Azure Arc 中 监控和切换 页清除作业。
迁移到 SQL 托管实例 后的已知问题
迁移到Azure SQL 托管实例后,请考虑以下已知问题:
迁移到SQL 托管实例后还原操作失败
如果将数据库从 SQL Server 2019 及更高版本迁移到 Azure SQL 托管实例,并且启用了 accelerated 数据库恢复,但配置了持久性版本存储(PVS)设置为除 PRIMARY 文件组以外的其他版本,则可以在目标 SQL 托管实例上遇到还原操作失败。
若要解决此问题,请确保将源SQL Server数据库上的 persistent 版本存储(PVS)设置为 PRIMARY,然后再将其迁移到SQL 托管实例。 如果已迁移数据库而不将 PVS 设置为 PRIMARY,则可以在源SQL Server数据库上设置该数据库,然后将数据库重新迁移到SQL 托管实例。
迁移到SQL 托管实例后无法使用加速数据库恢复
从 SQL Server 2019 开始,如果将数据库迁移到 Azure SQL 托管实例,并且源数据库已禁用 accelerated 数据库恢复,则无法在目标 SQL 托管实例上使用加速数据库恢复。
若要解决此问题,在将源SQL Server数据库迁移到SQL 托管实例之前,请确保可启用加速数据库恢复。 如果已在未启用加速数据库恢复的情况下迁移数据库,则可以在源SQL Server数据库上启用该数据库,然后将数据库重新迁移到 SQL 托管实例。
SQL Server 2017 和早期版本不支持加速数据库恢复,因此此问题不适用于从这些版本的SQL Server迁移的数据库。
迁移到 SQL 托管实例 后无法使用 Service Broker
如果将数据库迁移到 Azure SQL 托管实例,并且源数据库上禁用了 Service Broker,则无法在目标 SQL 托管实例上使用 Service Broker。
若要解决此问题,请确保在将源SQL Server数据库上启用 Service Broker,然后再将其迁移到SQL 托管实例。 如果已在未启用 Service Broker 的情况下迁移数据库,则可以在源SQL Server数据库上启用它,然后将数据库重新迁移到SQL 托管实例。
联系微软
您可以联系微软来创建一个支持票证以解决您遇到的问题,或直接向产品组提供反馈。
联系支持人员
使用 https://aka.ms/azure-support转到 Azure 门户中的 Help + 支持页,然后按照以下步骤打开与迁移相关的支持票证:
- 选择“ 创建支持请求 ”以打开 “支持 + 故障排除 ”窗格。
- 在文本字段中键入
migration,然后在你遇到问题的哪个服务下选择“以上皆非” - 在 选择服务下拉列表中,选择
SQL Server enabled by Azure Arc,然后使用 Next 继续。 - 从下拉列表中选择订阅。
- 从
resource 下拉列表中选择由 Azure Arc 资源启用的SQL Server 实例,然后选择 Next 。 - 在“是否遇到以下问题?”磁贴中选择“迁移问题”,然后选择“下一步”。
- 在“支持 + 故障排除”窗格中的顶部导航栏中选择“创建支持请求”以打开支持票证表单。
- 使用以下 问题子类型 值将问题路由到相应的支持队列:
- 评估:如果您在迁移准备情况评估中遇到问题。
- LRS 数据迁移:如果您在 日志重播服务(LRS)迁移时遇到问题。
- MI 链接数据迁移:如果托管实例链接迁移出现问题。
- 监控和切换:如果在监控迁移或切换时遇到问题。
- Target Provisioning:如果在预配目标Azure SQL 托管实例时遇到问题。
- 使用 “下一步” 继续完成支持请求表单的剩余步骤,然后选择“ 创建 ”以提交支持请求。
向产品组提供反馈
你可以向产品组提供反馈,以帮助改善迁移体验。 使用以下链接提交反馈: