SQL Server 实用工具故障排除

排查SQL Server实用工具问题可能包括解决使用 UCP 注册 SQL Server 实例失败的操作、排查失败的数据收集导致 UCP 上托管实例列表视图中出现灰色图标的问题、缓解性能瓶颈或解决资源运行状况问题。 有关缓解SQL Server UCP 发现的资源运行状况问题的详细信息,请参阅排查SQL Server 资源运行状况 (SQL Server实用工具) 问题。

向 SQL Server 实用工具中注册 SQL Server 实例的失败的操作

如果连接到 SQL Server 实例以使用 SQL Server 身份验证进行注册,并且指定了一个代理帐户,该帐户属于与 UCP 所在的域不同的 Active Directory 域,则实例验证会成功,但注册操作失败并显示以下错误消息:

执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)

其他信息:无法获取有关 Windows NT 组/用户“DomainName\AccountName>”<的信息,错误代码0x5。 (Microsoft SQL Server,错误:15404)

在以下示例中将发生此问题:

  1. UCP 是“Domain_1”的成员。

  2. 存在单向域信任关系:即,“Domain_1”不为“Domain_2”所信任,但“Domain_2”为“Domain_1”所信任。

  3. 注册到 SQL Server 实用工具的 SQL Server 实例也是“Domain_1”的成员。

  4. 在注册操作期间,连接到 SQL Server 实例,以使用“sa”进行注册。 指定来自“Domain_2”的一个代理帐户。

  5. 验证成功但注册失败。

使用上面的示例,此问题的解决方法是连接到 SQL Server 实例,以使用“sa”注册到SQL Server实用工具,并从“Domain_1”提供代理帐户。

失败的 WMI 验证

如果在 SQL Server 实例上未正确配置 WMI,则“创建 UCP”和“注册托管实例”操作会显示警告,但不会阻止该操作。 此外,如果更改SQL Server 代理帐户配置,使SQL Server 代理无权访问所需的 WMI 类,则受影响托管实例SQL Server的数据收集无法上传到 UCP。 这将导致 UCP 中的灰色图标。

数据收集失败会导致受影响SQL Server托管实例的 UCP 列表视图中出现灰色状态图标。 SQL Server 托管实例上的作业历史记录显示,sysutility_mi_collect_and_upload在步骤 2 上失败, (阶段从 PowerShell 脚本) 收集的数据。

简化的错误消息如下:

命令执行已停止,因为 shell 变量 "ErrorActionPreference" 设置为 Stop: 拒绝访问。

错误: <日期时间 (MM/DD/YYYY HH:MM:SS) >:收集 CPU 属性时捕获异常。 WMI 查询可能已失败。 警告。

为了解决此问题,请验证以下配置设置:

  • 在 Windows Server 2003 上,SQL Server 代理服务必须是 SQL Server 托管实例上的 Windows 性能监视组的一部分。

  • 必须在 SQL Server 的托管实例上启用和配置 WMI 服务。

  • SQL Server 托管实例上的 WMI 存储库可能已损坏。

  • SQL Server 的托管实例上,性能库可能缺失或损坏。

若要验证指定的 SQL Server 实例是否已正确配置为向 UCP 报告数据,请验证以下类是否在指定的 SQL Server 实例上可用,以及这些类是否可供SQL Server 代理服务帐户访问:

  • Win32_MountPoint

  • Win32_PerfRawData_PerfProc_Process

  • Win32_PerfRawData_PerfOS_Processor

  • Win32_Processor

  • Win32_Volume

  • Win32_LogicalDisk

您可以对上述每个类使用 Get-WmiObject PowerShell cmdlet 命令,以便验证每个类都是可访问的。 在 SQL Server 的托管实例上运行以下 cmdlet:

Get-WmiObject Win32_MountPoint -ErrorAction Stop | Out-Null  
Get-WmiObject Win32_PerfRawData_PerfProc_Process -ErrorAction Stop| Out-Null  
Get-WmiObject Win32_PerfRawData_PerfOS_Processor -ErrorAction Stop | Out-Null  
Get-WmiObject Win32_Processor -ErrorAction Stop | Out-Null  
Get-WmiObject Win32_Volume -ErrorAction Stop | Out-Null  
Get-WmiObject Win32_LogicalDisk -ErrorAction Stop | Out-Null  

有关 WMI 故障排除的详细信息,请参阅 WMI 疑难解答。 请注意,这些 SQL Server 实用工具操作中的查询在本地运行,因此,DCOM 和远程故障排除内容不适用。

失败的数据收集

如果SQL Server实用工具数据收集事件失败,请考虑以下可能性:

  • 不要更改 SQL Server 的托管实例上“实用工具信息”收集组的任何属性,并且不要手动打开或关闭数据收集,因为数据收集由实用工具代理作业控制。

  • 失败的或不支持的 WMI 验证。 有关详细信息,请参阅本主题前面的“失败的 WMI 验证”部分。

  • 刷新托管实例列表视图中的数据,因为 SQL Server 实用工具视点中的数据不会自动刷新。 若要刷新数据,请右键单击“实用工具资源管理器”导航窗格中的“托管实例”节点,然后选择“刷新”,或者在列表视图中右键单击SQL Server实例名称,然后选择“刷新”。 请注意,使用 UCP 注册 SQL Server 实例后,数据最多可能需要 30 分钟才能首次显示在实用工具资源管理器内容窗格中的仪表板和视点中。

  • 使用 SQL Server 配置管理器 验证 SQL Server 实例是否正在运行。

  • 如果数据收集或数据上载由于超时问题而失败,则更新 MSDB 数据库中的函数 dbo.fn_sysutility_mi_get_collect_script()。 具体而言,在函数“Invoke-BulkCopyCommand()”中添加行:

    $bulkCopy.BulkCopyTimeout=180  
    

    默认超时值为 30 秒。

  • 如果 SQL Server 实例不是群集的,请验证SQL Server 代理服务是否正在运行,并且该服务是否设置为在 UCP 和 SQL Server 的托管实例上自动启动。

  • 验证是否使用有效的帐户在SQL Server的托管实例上运行数据收集。 例如,密码可能已到期。 如果代理密码已到期,则更新 SSMS 中的密码凭据,如下所示:

    1. 在 SSMS 的 “对象资源管理器”中,展开 “安全性” 节点,然后展开 “凭据” 节点。

    2. 右键单击“ UtilityAgentProxyCredential_<GUID> ”,然后选择“ 属性”。

    3. 在“凭据属性”对话框中,根据需要更新 UtilityAgentProxyCredential_<GUID> 凭据的凭据。

    4. 单击“确定”确认更改。

  • 应在 UCP 和 SQL Server 的托管实例上启用 TCP/IP。 通过SQL Server 配置管理器启用 TCP/IP。

  • UCP 上的 SQL Server Browser 服务必须启动,并且它必须配置为自动启动。 如果组织阻止使用 SQL Server Browser 服务,请使用以下步骤允许 SQL Server 的托管实例连接到 UCP:

    1. 在 SQL Server 托管实例的 Windows 任务栏上,单击“启动”,然后单击“运行...”

    2. 在提供的空间中键入“cliconfg.exe”,然后单击 “确定”

    3. 如果提示允许“SQL 客户端配置实用工具 EXE”启动,则单击“继续”

    4. “SQL Server客户端网络实用工具”对话框中,选择“别名”选项卡,然后单击“添加...”

    5. “添加网络库配置” 对话框上:

    6. 从网络库的列表中指定 TCP/IP。

    7. “服务器别名” 文本框中指定 UCP 的 ComputerName\InstanceName。

    8. “服务器名称” 文本框中指定 UCP 的 ComputerName。

    9. 取消选中 “动态确定端口” 复选框。

    10. “端口号” 文本框中指定 UCP 正在侦听的端口号。

    11. 单击“确定”以保存你的更改。

    12. 对连接到未启用 SQL Server Browser 服务的 UCP 的每个托管SQL Server实例重复这些步骤。

  • 确保SQL Server的托管实例已连接到网络。

  • 如果 SQL Server 托管实例上存在名称相同但区分大小写设置不同的数据库,则数据库及其视点之间的标识可能不正确,从而导致数据收集失败。 例如,名为“MYDATABASE”的数据库可能显示名为“MyDatabase”的数据库的运行状态。 在此情况下不产生任何错误。 失败的数据收集可能还源自 UCP 中显示的其他对象(例如数据库文件和文件组名称)中的区分大小写设置不匹配。

  • 如果 SQL Server 的托管实例托管在 Windows Server 2003 计算机上,则SQL Server 代理服务帐户必须属于性能监视器用户安全组或本地管理员组。 否则,数据收集将失败并且具有拒绝访问错误。 若要将SQL Server 代理服务帐户添加到性能监视器用户安全组,请使用以下步骤:

    1. 依次打开 “计算机管理”“本地用户和组”“组”

    2. 右键单击 “性能监视器用户” ,然后选择 “添加到组”

    3. 单击“添加” 。

    4. 输入 SQL Server 代理服务正基于其运行的帐户,然后单击 “确定”

    5. 如果在将用户添加到此组之前,已向 UCP 注册 SQL Server 实例,请重启SQL Server 代理服务。

另请参阅

SQL Server 实用工具功能和任务
SQL Server 资源运行状况故障排除(SQL Server 实用工具)