CMPivot 疑难解答

CMPivot 是一种工具,可用于访问环境中设备的实时状态。 CMPivot 在目标集合中所有当前连接的设备上运行查询并返回结果。

有时,可能需要对 CMPivot 进行故障排除。 例如,如果从客户端到 CMPivot 的状态消息损坏,则站点服务器无法处理该消息。 本文可帮助你了解 CMPivot 的信息流。

对版本 1902 及更高版本中的 CMPivot 进行故障排除

在 Configuration Manager 版本 1902 及更高版本中,可以从管理中心站点运行 CMPivot, (层次结构中的 CAS) 。 主站点仍处理与客户端的通信。

从 CAS 运行 CMPivot 时,它将使用高速消息订阅通道与主站点通信。 CMPivot 不使用站点之间的标准SQL Server复制。 如果SQL Server实例或 SMS 提供程序是远程的,或者如果使用SQL Server Always On可用性组,则 CMPivot 将采用“双跃点方案”。 有关如何为“双跃点方案”定义约束委派的信息,请参阅 从版本 1902 开始的 CMPivot

重要

对 CMPivot 进行故障排除时,请在管理点 (MP) 和站点服务器的SMS_MESSAGE_PROCESSING_ENGINE上启用详细日志记录以获取详细信息。 此外,如果客户端的输出大于 80 KB,请在 MP 和站点服务器的 SMS_STATE_SYSTEM 组件上启用详细日志记录。 有关如何启用详细日志记录的信息,请参阅 站点服务器日志记录选项

从站点服务器获取信息

默认情况下,站点服务器日志文件位于 中 C:\Program Files\Microsoft Configuration Manager\logs。 如果指定了非默认安装目录或将 SMS 提供程序等卸载项卸载到另一台服务器,则此位置可能有所不同。 如果从 CAS 运行 CMPivot,则日志位于主站点服务器上。

查找 smsprov.log 以下行:

  • Configuration Manager版本 1906:

    Auditing: User <username> initiated client operation 145 to collection <CollectionId>.
    
  • Configuration Manager版本 1902:

    Type parameter is 135.
    Auditing: User <username> ran script 7DC6B6F1-E7F6-43C1-96E0-E1D16BC25C14 with hash dc6c2ad05f1bfda88d880c54121c8b5cea6a394282425a88dd4d8714547dc4a2 on collection <CollectionId>.
    

7DC6B6F1-E7F6-43C1-96E0-E1D16BC25C14 是 CMPivot 的Script-Guid。 还可以在 CMPivot 审核状态消息中看到此 GUID。

接下来,在 CMPivot 窗口中查找 ID。 此 ID 为 ClientOperationID

CMPivot 窗口,其中突出显示了 ClientOperationID,版本 1902

TaskID从 ClientAction 表中查找 。 对应于 TaskIDUniqueID ClientAction 表中的 。

select * from ClientAction where ClientOperationId=<id>

在 中BgbServer.logTaskID查找从 SQL Server 收集的 ,并记下 PushID。 标记为 TaskIDTaskGUID。 例如:

Starting to send push task (PushID: 9 TaskID: 12 TaskGUID: 9A4E59D2-2F5B-4067-A9FA-B99602A3A4A0 TaskType: 15 TaskParam: PFNjcmlwdENvbnRlbnQgU2NyaXB0R3VpZD0nN0RDNkI2RjEtRTdGNi00M0MxL (truncated log entry)
Finished sending push task (PushID: 9 TaskID: 12) to 2 clients

客户端日志

从站点服务器获取信息后,请检查客户端日志。 默认情况下,客户端日志位于 中 C:\Windows\CCM\Logs

在 中 CcmNotificationAgent.log,查找如下所示的日志条目:

Receive task from server with pushid=9, taskid=12, taskguid=9A4E59D2-2F5B-4067-A9FA-B99602A3A4A0, tasktype=15 and taskParam=PFNjcmlwdEhhc2ggU2NyaXB0SGF (truncated log entry)
Send Task response message <BgbResponseMessage TimeStamp="2019-09-13T17:29:09Z"><PushID>5</PushID><TaskID>4</TaskID><ReturnCode>1</ReturnCode></BgbResponseMessage> successfuly.

检查 Scripts.log 是否为 TaskID。 在以下示例中,你将看到 Task ID{9A4E59D2-2F5B-4067-A9FA-B99602A3A4A0}

Sending script state message (fast): {9A4E59D2-2F5B-4067-A9FA-B99602A3A4A0}
Result are sent for ScriptGuid: 7DC6B6F1-E7F6-43C1-96E0-E1D16BC25C14 and TaskID: {9A4E59D2-2F5B-4067-A9FA-B99602A3A4A0}

注意

如果在 中 Scripts.log看不到“ (快速) ”,则数据可能超过 80 KB。 在这种情况下,信息将作为状态消息发送到站点服务器。 使用客户端的 StateMessage.log 和站点服务器的 Statesys.log

查看站点服务器上的邮件

在管理点上启用 详细日志记录 后,可以查看如何处理传入的客户端消息。 在 中 MP_RelayMsgMgr.log,查找 TaskID

在此 MP_RelayMsgMgr.log 示例中,可以看到客户端的 ID (GUID:83F67728-2E6D-4E4F-8075-ED035C31B783)Task ID {9A4E59D2-2F5B-4067-A9FA-B99602A3A4A0}。 在将消息 ID 发送到消息处理引擎之前,将消息 ID 分配给客户端的响应:

MessageKey: GUID:83F67728-2E6D-4E4F-8075-ED035C31B783{9A4E59D2-2F5B-4067-A9FA-B99602A3A4A0}
Create message succeeded for message id 22f00adf-181e-4bad-b35e-d18912f39f89
Add message payload succeeded for message id 22f00adf-181e-4bad-b35e-d18912f39f89
Put message succeeded for message id 22f00adf-181e-4bad-b35e-d18912f39f89
CRelayMsgMgrHandler::HandleMessage(): ExecuteTask() succeeded

在 上SMS_MESSAGE_PROCESSING_ENGINE.log启用详细日志记录时,将处理客户端结果。 使用从 MP_RelayMsgMgr.log中找到的消息 ID。 处理日志条目类似于以下示例:

Processing 2 messages with type Instant and IDs 22f00adf-181e-4bad-b35e-d18912f39f89[19], 434d80ae-09d4-4d84-aebf-28a4a29a9852[20]...
Processed 2 messages with type Instant. Failed to process 0 messages. All message IDs 22f00adf-181e-4bad-b35e-d18912f39f89[19], 434d80ae-09d4-4d84-aebf-28a4a29a9852[20]

提示

如果在处理过程中遇到异常,可以通过运行以下 SQL 查询并查看“异常”列来查看该异常。 处理消息后,该消息将不再位于 MPE_RequestMessages_Instant 表中。

select * from MPE_RequestMessages_Instant where MessageID=<ID from SMS_MESSAGE_PROCESSING_ENGINE.log>

在 中 BgbServer.log,查找 PushID 以查看报告或失败的客户端数。

Generated BGB task status report c:\ConfigMgr\inboxes\bgb.box\Bgb5c1db.BTS at 09/16/2019 16:46:39. (PushID: 9 ReportedClients: 2 FailedClients: 0)

使用 从 SQL Server 检查 CMPivot 的TaskID监视视图。

select * from vSMS_CMPivotStatus where TaskID='{9A4E59D2-2F5B-4067-A9FA-B99602A3A4A0}'

用于在版本 1902 中进行故障排除的 CMPivot SQL 查询

排查 1810 及更早版本中的 CMPivot 问题

在 Configuration Manager 版本 1810 及更早版本中,站点服务器处理与客户端的通信。

从站点服务器获取信息

默认情况下,站点服务器日志文件位于 中 C:\Program Files\Microsoft Configuration Manager\logs。 如果指定了非默认安装目录或将 SMS 提供程序等卸载项卸载到另一台服务器,则此位置可能有所不同。

smsprov.log查找以下行:

Auditing: User <username> initiated client operation 135 to collection <CollectionId>.

在 CMPivot 窗口中查找 ID。 此 ID 为 ClientOperationID

突出显示了 ClientOperationID 的 CMPivot 窗口

TaskID从 ClientAction 表中查找 。 对应于 TaskIDUniqueID ClientAction 表中的 。

select * from ClientAction where ClientOperationId=<id>

BgbServer.log中, TaskID 查找从 SQL 收集的 。 它标记为 TaskGUID。 例如:

Starting to send push task (PushID: 260 TaskID: 258 TaskGUID: F8C7C37F-B42B-4C0A-B050-2BB44DF1098A TaskType: 15
TaskParam: PFNjcmlwdEhhc2ggU2NyaXB0SGF...truncated...to 5 clients with throttling (strategy: 1 param: 42)
Finished sending push task (PushID: 260 TaskID: 258) to 5 clients

客户端日志

从站点服务器获取信息后,请检查客户端日志。 默认情况下,客户端日志位于 中 C:\Windows\CCM\Logs

在 中 CcmNotificationAgent.log,查找类似于以下条目的日志:

Error! Bookmark not defined.+PFNjcmlwdEhhc2ggU2NyaXB0SGFzaEFsZz0nU0hBMjU2Jz42YzZmNDY0OGYzZjU3M2MyNTQyNWZiNT
g2ZDVjYTIwNzRjNmViZmQ1NTg5MDZlMWI5NDRmYTEzNmFiMDE0ZGNjPC9TY3JpcHRIYXNoPjxTY3Jp (truncated log entry)

在 中 Scripts.log 查找 TaskID。 在以下示例中,我们看到了 Task ID {F8C7C37F-B42B-4C0A-B050-2BB44DF1098A}

Sending script state message: 7DC6B6F1-E7F6-43C1-96E0-E1D16BC25C14
State message: Task Id {F8C7C37F-B42B-4C0A-B050-2BB44DF1098A}

在 中 StateMessage.log查找 。 在以下示例中,你将看到 靠近 TaskID 消息 <Param>底部旁边的 :

StateMessage body: <?xml version="1.0" encoding="UTF-16"?>
<Report><ReportHeader><Identification><Machine><ClientInstalled>1</ClientInstalled><ClientType>1
</ClientType><ClientID>GUID:DBAC52C9-57E6-47D7-A8D6-E0A5A64B57E6</ClientID><ClientVersion>5.00.8670.1000</ClientVersion>
<NetBIOSName>R613924</NetBIOSName><CodePage>437</CodePage>
<SystemDefaultLCID>1033</SystemDefaultLCID><Priority>0</Priority></Machine></Identification>
<ReportDetails><ReportContent>State Message Data</ReportContent><ReportType>Full</ReportType>
<Date>20180703184447.673000+000</Date><Version>1.0</Version><Format>1.0</Format>
</ReportDetails></ReportHeader><ReportBody><StateMessage MessageTime="20180703184447.517000+000"><Topic ID="7DC6B6F1-E7F6-43C1-96E0-E1D16BC25C14" Type="9003" IDType="0" User="" UserSID=""/><State ID="1" Criticality="0"/>
<StateDetails Type="1"><![CDATA["PAA/AHgAbQBsACAAdgBlAHIAcwBpAG8AbgA9ACIAMQAuADAAIgAgAGUAbgBjAG8AZABpAG4AZwA9ACIAdQB0AGYALQAxADYAIgA/AD4APAByAGUAcwB1AGwAdAAgAFIAZQBzAHUAbAB0AEMAbwBkAGUAPQAiADAAIgA+ADwAZQAgAE4AYQBtAGUAPQAiAEkAbgB0AGUAbAAoAFIAKQAgAFgAZQBvAG4AKABSACkAIABDAFAAVQAgAEUANQAtADIANgA3ADMAIAB2ADQAIABAACAAMgAuADMAMABHAEgAegAiACAATQBhAG4AdQBmAGEAYwB0AHUAcgBlAHIAPQAiAEEAbQBlAHIAaQBjAGEAbgAgAE0AZQBnAGEAdAByAGUAbgBkAHMAIABJAG4AYwAuACIAIABWAGUAcgBzAGkAbwBuAD0AIgBWAFIAVABVAEEATAAgAC0AIAA2ADAAMAAxADcAMAAyACIAIABSAGUAbABlAGEAcwBlAEQAYQB0AGUAPQAiADIAMAAxADcALQAwADYALQAwADIAIAAwADAAOgAwADAAOgAwADAAIgAgAFMAZQByAGkAYQBsAE4AdQBtAGIAZQByAD0AIgAwADAAMAAwAC0AMAAwADEAOAAtADMANgA4ADIALQA0ADcAMAA4AC0ANwA2ADQAMAAtADcANgAwADAALQAzADMAIgAgAFMATQBCAEkATwBTAEIASQBPAFMAVgBlAHIAcwBpAG8AbgA9ACIAMAA5ADAAMAAwADcAIAAiACAALwA+ADwALwByAGUAcwB1AGwAdAA+AA=="~~]]></StateDetails><UserParameters Flags="0" Count="2">
<Param>{F8C7C37F-B42B-4C0A-B050-2BB44DF1098A}</Param><Param>0</Param></UserParameters></StateMessage></ReportBody></Report>

Successfully forwarded State Messages to the MP StateMessage 7/3/2018 11:44:47 AM 5036 (0x13AC)

查看站点服务器上的邮件

打开 statesys.log 以查看消息是否已接收和处理。 在以下示例中,在消息<Param>底部附近看到 TaskID 。 在 SMS_STATE_SYSTEM 组件上启用 详细日志记录 以查看这些日志条目。

CMessageProcessor - the cmdline to DB exec dbo.spProcessStateReport N'?<?xml version="1.0" encoding="UTF-
16"?>~~<Report><ReportHeader><Identification><Machine><ClientInstalled>1</ClientInstalled><ClientType>1
</ClientType><ClientID>GUID:DBAC52C9-57E6-47D7-A8D6-E0A5A64B57E6</ClientID><ClientVersion>5.00.8670.1000</ClientVersion>
<NetBIOSName>R613924</NetBIOSName><CodePage>437</CodePage>
<SystemDefaultLCID>1033</SystemDefaultLCID><Priority>0</Priority></Machine></Identification>
<ReportDetails><ReportContent>State Message Data</ReportContent><ReportType>Full</ReportType>
<Date>20180703184447.673000+000</Date><Version>1.0</Version><Format>1.0</Format>
</ReportDetails></ReportHeader><ReportBody><StateMessage MessageTime="20180703184447.517000+000"><Topic ID="7DC6B6F1-E7F6-43C1-96E0-E1D16BC25C14" Type="9003" IDType="0" User="" UserSID=""/><State ID="1" Criticality="0"/>
<StateDetails Type="1"><![CDATA["PAA/AHgAbQBsACAAdgBlAHIAcwBpAG8AbgA9ACIAMQAuADAAIgAgAGUAbgBjAG8AZABpAG4AZwA9ACIAdQB0AGYALQAxADYAIgA/AD4APAByAGUAcwB1AGwAdAAgAFIAZQBzAHUAbAB0AEMAbwBkAGUAPQAiADAAIgA+ADwAZQAgAE4AYQBtAGUAPQAiAEkAbgB0AGUAbAAoAFIAKQAgAFgAZQBvAG4AKABSACkAIABDAFAAVQAgAEUANQAtADIANgA3ADMAIAB2ADQAIABAACAAMgAuADMAMABHAEgAegAiACAATQBhAG4AdQBmAGEAYwB0AHUAcgBlAHIAPQAiAEEAbQBlAHIAaQBjAGEAbgAgAE0AZQBnAGEAdAByAGUAbgBkAHMAIABJAG4AYwAuACIAIABWAGUAcgBzAGkAbwBuAD0AIgBWAFIAVABVAEEATAAgAC0AIAA2ADAAMAAxADcAMAAyACIAIABSAGUAbABlAGEAcwBlAEQAYQB0AGUAPQAiADIAMAAxADcALQAwADYALQAwADIAIAAwADAAOgAwADAAOgAwADAAIgAgAFMAZQByAGkAYQBsAE4AdQBtAGIAZQByAD0AIgAwADAAMAAwAC0AMAAwADEAOAAtADMANgA4ADIALQA0ADcAMAA4AC0ANwA2ADQAMAAtADcANgAwADAALQAzADMAIgAgAFMATQBCAEkATwBTAEIASQBPAFMAVgBlAHIAcwBpAG8AbgA9ACIAMAA5ADAAMAAwADcAIAAiACAALwA+ADwALwByAGUAcwB1AGwAdAA+AA=="~~]]></StateDetails><UserParameters Flags="0" Count="2">
<Param>{F8C7C37F-B42B-4C0A-B050-2BB44DF1098A}</Param><Param>0</Param></UserParameters></StateMessage></ReportBody></Report>~~'

如果邮件尚未处理,请检查状态邮件收件箱。 默认收件箱位置为 C:\Program Files\Microsoft Configuration Manager\inboxes\auth\statesys.box\。 查找以下位置中的文件:

  • 传入
  • 已损坏
  • 流程

使用以下 TaskIDSQL 查询检查 CMPivot 的监视视图:

select * from vSMS_CMPivotStatus where TaskID='{F8C7C37F-B42B-4C0A-B050-2BB44DF1098A}'

注意

对于使用版本 1810 或更高版本的客户端,除非输出大于 80 KB,否则不使用状态消息传送。 在这些情况下对 CMPivot 进行故障排除时,可以在 MP 和站点服务器的SMS_MESSAGE_PROCESSING_ENGINE上启用详细日志记录时获取详细信息。 有关如何启用详细日志记录的信息,请参阅 站点服务器日志记录选项

若要进行故障排除,请参阅以下日志:

  • MP_Relay.log
  • SMS_MESSAGE_PROCESSING_ENGINE.log

后续步骤