你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

SQL Server IaaS 代理扩展的已知问题和故障排除

适用于: Azure VM 上的 SQL Server

本文可帮助解决使用SQL Server IaaS 代理扩展时出现的已知问题并排查错误。

有关扩展的常见问题解答,请查看常见问题解答

检查先决条件

若要避免由不支持的选项或限制导致的错误,请验证扩展的先决条件

如果修复或重新安装 SQL IaaS 代理扩展,则除了许可更改外,不会保留设置。 如果已修复或重新安装该扩展,则必须重新配置自动备份、自动修补以及在修复或重新安装之前已配置的任何其他服务。

检查扩展健康状况

可以在 Azure 门户的“SQL 虚拟机”资源的“ 概述”页的“扩展运行状况”下上检查扩展的运行状况。

Azure 门户 SQL 虚拟机资源的概述窗格的屏幕截图。

注意

还可以使用 PowerShell 脚本检查虚拟机上的扩展运行状况。 可以在 GitHub 上找到完整脚本,请参阅使用 Az PowerShell 获取 SQL IaaS 代理扩展运行状况

SQL IaaS 代理扩展的状态可以是:

  • 健康:一切都符合预期。
  • 失败:主 SQL IaaS 代理服务未在 SQL Server VM 上运行。
  • 不健康:一个或多个子服务出现问题。

如果 SQL IaaS 代理扩展的状态为不健康失败,请检查“概述”页上的“ 通知”,了解更多详细信息。

修复扩展

SQL IaaS 代理扩展可能处于失败状态。 使用 Azure 门户修复 SQL IaaS 代理扩展。

使用 Azure 门户修复扩展:

  1. 登录 Azure 门户

  2. 转到 SQL 虚拟机资源。

  3. 从列表中选择 SQL Server VM。 如果 SQL Server VM 未在此处列出,可能是还没有向 SQL IaaS 代理扩展注册。

  4. 在“帮助”下选择“SQL IaaS 代理扩展设置”。

  5. 如果预配状态显示为“失败”,请选择“修复”来修复扩展。 如果状态为“成功”,则可以选中“强制修复”旁边的框来修复扩展,而不考虑状态。

    Azure 门户中 SQL 虚拟机扩展的 SQL IaaS 代理扩展设置页的屏幕截图,其中显示了在何处修复该扩展。

主扩展服务未运行

SQL IaaS 代理扩展(Microsoft SQL Server IaaS 代理)的主服务处于停止状态。 由于此错误,SQL IaaS 代理扩展状态为失败

要解决此错误情况,请修复扩展。

扩展查询服务未运行

SQL IaaS 代理扩展使用查询服务(Microsoft SQL Server IaaS 查询服务)与 SQL Server 通信。 如果查询服务处于停止状态,依赖于与 SQL Server 通信的功能将不起作用。 由于此错误,SQL IaaS 代理扩展状态为不健康

要解决此错误情况,请修复扩展。

SQL Server 未运行

SQL Server 服务已停止。 由于此错误,SQL IaaS 代理扩展状态为不健康

请进一步调查,并重启服务

扩展没有正确的权限

SQL IaaS 代理扩展查询服务(Microsoft SQL Server IaaS 查询服务)使用NT Service\SQLIaaSExtensionQuery帐户查询 SQL Server 实例。 如果从 SQL Server 中删除此登录名,或者用户或域策略更改登录权限,会看到扩展没有正确权限的错误。 由于此错误,SQL IaaS 代理扩展状态为不健康

对于使用最低特权权限模型的 SQL Server VM,请检查以确保NT Service\SQLIaaSExtensionQuery帐户具有与每个已启用功能关联的正确权限。 如果未启用任何功能,则如果 SQL Server 中不存在NT Service\SQLIaaSExtensionQuery登录名,或者Microsoft SQL Server IaaS 查询服务NT Service\SQLIaaSExtensionQuery不同的用户名下运行,会看到错误。

在 2022 年 10 月之前部署的一些 SQL Server VM 仍可能使用较旧的 sysadmin 权限模型。 对于这些较旧的 VM,如果NT Service\SQLIaaSExtensionQuery不存在,或者 SQL Server 中没有 sysadmin 权限,或者Microsoft SQL Server IaaS 查询服务在与NT Service\SQLIaaSExtensionQuery不同的用户名下运行,会看到权限错误。

要解决此错误情况,请确认登录名存在于 SQL Server 中,并且它具有正确的权限(基于已启用的功能)。 可能需要重新创建登录名和/或分配正确的权限。 此外,验证Microsoft SQL Server IaaS 查询服务在用户名NT Service\SQLIaaSExtensionQuery下运行。

“不支持映像”错误

在以下不受支持的 Azure 市场映像上阻止 SQL IaaS 代理扩展注册:

  • Power BI 虚拟机
  • SQL Server Analysis Services

管理状态无效

如果看到以下错误消息,请修复扩展

The SQL virtual machines resource is not in a valid state for management

基础虚拟机无效

如果出现下面的错误消息:

SQL management operations are disabled because the state of underlying virtual machine is invalid

考虑以下情况:

  • SQL VM 可能已停止、解除分配、处于失败状态或找不到。 验证基础虚拟机是否正在运行。
  • SQL IaaS 代理扩展可能处于失败状态。 修复扩展

如果执行了以下任何操作,请从 SQL Server VM 中删除扩展,然后再次使用该扩展注册 SQL VM:

  • 已将 VM 从一个订阅迁移到另一个订阅。
  • 已更改 SQL Server 的区域设置或排序规则。
  • 已更改 SQL Server 实例的版本。
  • 已更改 SQL Server 实例的版本。

预配失败

如果 SQL IaaS 代理扩展状态在 Azure 门户中显示为“预配失败”,请修复扩展

如果在 SQL Server 配置管理器或虚拟机级别禁用 TCP/IP,则 SQL IaaS 代理扩展可能无法安装。

门户中的 SQL VM 资源不可用

如果已安装 SQL IaaS 代理扩展,并且 VM 处于联机状态,但 Azure 门户中的 SQL VM 资源不可用,请验证是否已在 VM 中启动 SQL Server 和 SQL Browser 服务。 如果这未解决该问题,请修复扩展

功能灰显

如果导航到 Azure 门户中的 SQL VM 资源,并且某些功能灰显,请验证 SQL VM 是否正在运行,以及 SQL IaaS 代理扩展是否为最新版本。

已更改服务帐户

更改与扩展关联的两项服务中的任一服务的服务帐户都可能导致扩展失败或行为不可预测。

这两项服务应在以下帐户下运行:

  • Microsoft SQL Server IaaS 代理是 SQL IaaS 代理扩展的主服务,应在“本地系统”帐户下运行。
  • Microsoft SQL Server IaaS 查询服务是一种帮助程序服务,可帮助扩展在 SQL Server 中运行查询,它应在“NT 服务”帐户 NT Service\SqlIaaSExtensionQuery 下运行。

自动注册失败

如果有几个 SQL Server VM 自动注册失败,请检查注册失败的 VM 上的 SQL Server 版本。 默认情况下,具有 SQL Server 2016 或更高版本的 Azure VM 会在被 CEIP 服务检测到的情况下自动注册到 SQL IaaS 代理扩展。 版本早于 2016 的 SQL Server VM 必须单独批量进行手动注册。

高资源消耗量

如果发现 SQL IaaS 代理扩展消耗的 CPU 或内存意外过高,请验证该扩展是否为最新版本。 如果是,请从 services.msc 重启 Microsoft SQL Server IaaS 代理。

无法扩展磁盘

在以下情况下,无法从 SQL VM 资源的“存储配置”页扩展磁盘:

  • 如果卸载并重新安装 SQL IaaS 代理扩展。
  • 如果卸载并重新安装 SQL Server 实例。
  • 如果在从 Azure 市场部署 SQL Server 映像时对磁盘/存储池名称使用了自定义命名约定。
  • 如果使用高级 SSDv2 部署了 SQL Server VM。
  • 如果在 SQL Server 配置管理器或虚拟机级别禁用 TCP/IP。

部署期间磁盘配置灰显

如果使用非托管磁盘创建 SQL Server VM,则磁盘配置在设计上会灰显。

自动备份已禁用

如果 SQL VM 资源显示“自动备份当前已禁用”,请检查 SQL Server 实例是否已启用托管备份。 若要从 Azure 门户使用自动备份,请在 SQL Server 中禁用托管备份。

扩展陷入转换

在以下情况下,SQL IaaS 代理扩展可能会陷入转换状态:

  • 已从 SQL Server 登录和/或本地管理员组中删除 NT service\SQLIaaSExtension 服务。
  • 这两种服务中的任何一种在 services.msc 中停止
    • Microsoft SQL Server IaaS 代理
    • Microsoft SQL Server IaaS 查询服务

无法在域控制器上安装

不支持向 SQL IaaS 代理扩展注册安装到域控制器的 SQL Server 实例。 注册到扩展会创建用户 NT Service\SQLIaaSExtension,由于无法在域控制器上创建此用户,因此不支持向 SQL IaaS 代理注册此 VM。

已禁用 TCP/IP

SQL IaaS 代理扩展要求在 SQL Server 配置管理器和虚拟机级别启用 TCP/IP。 禁用 TCP/IP 可能会导致不可预测的行为,例如无法安装或某些功能无法按预期工作。

找不到目标 SQL 实例

错误:Unable to find SQL instance to target. Skipping 'NT Service\\SQLIaaSExtensionQuery' removal from SQL logins 是可以安全忽略的警告消息。

如果订阅具有自动注册功能但 Azure 虚拟机未安装 SQL Server,你可能会在 Windows 事件查看器中看到此消息;在这种情况下,可以安全地忽略此消息。

计算机上未找到服务 MSSQLSERVER

错误:SQL Server IaaS Agent: PreReq failure: ErrorCode: NotRetryableUnexpectedError, Message: Service MSSQLSERVER was not found on computer '.'.;The specified service does not exist as an installed service

SQL IaaS 代理扩展仅适用于一个默认实例或一个命名实例。 有关更多信息,请查看多个实例支持

名为“MSSQLSERVER”的服务未运行

错误:Service with name 'MSSQLSERVER' is not running. Please make sure service 'MSSQLSERVER' is running and retry this operation

检查默认实例的 SQL Server 服务是否正在虚拟机中运行,否则请修复 IaaS 扩展。 如果有多个 SQL Server 实例,则 SQL IaaS 代理扩展将不起作用,因为当前不支持多个实例。 有关更多信息,请查看多个实例支持

扩展卡在转换中或预配失败状态

修复 SQL IaaS 代理扩展。 请确保只有一个默认实例或一个命名实例。 有关更多信息,请查看多个实例支持

拒绝访问 ExtensionLog_0.log

错误:EventID:56067 denied access to 'C:\WindowsAzure\Logs\Plugins\Microsoft.SqlServer.Management.SqlIaaSAgent\2.0.x.x\ExtensionLog_0.log'

[NT Service\SQLIaaSExtensionQuery] 的权限添加到错误中列出的路径。

无法创建 SQL VM 资源

不会在以下应用场景中创建 SQL 虚拟机资源:

  • 克隆虚拟机
  • 使用 Azure Site Recovery
  • 从一个订阅、资源组或区域迁移到另一个订阅、资源组或区域

重新安装 SQL IaaS 代理扩展以解决此错误。

由于来宾代理/VM 代理状态“未就绪”而失败

安装 VM 代理扩展以解决此错误。

扩展不适用于多个实例

这是正常情况。 有关更多信息,请查看多个实例支持

消耗更多内存/CPU 的扩展服务

如果看到此消息,请移除并重新安装扩展,以确保 SQL IaaS 代理扩展为最新版本,或者从 services.msc 重新启动 SQL IaaS 代理扩展服务。

扩展功能不适用于 SQL FCI

这是正常情况。 目前,Azure 虚拟机上向 SQL IaaS 代理扩展注册的 SQL Server 故障转移群集实例仅支持通过基本注册提供的数量有限的功能。

若要了解详细信息,请查看以下文章: