CMPivot 문제 해결

CMPivot은 사용자 환경에서 디바이스의 실시간 상태에 대한 액세스를 제공하는 도구입니다. CMPivot은 대상 컬렉션의 현재 연결된 모든 디바이스에서 쿼리를 실행하고 결과를 반환합니다.

경우에 따라 CMPivot 문제를 해결해야 할 수 있습니다. 예를 들어 클라이언트에서 CMPivot으로의 상태 메시지가 손상되면 사이트 서버에서 메시지를 처리할 수 없습니다. 이 문서는 CMPivot에 대한 정보의 흐름을 이해하는 데 도움이 됩니다.

버전 1902 이상에서 CMPivot 문제 해결

Configuration Manager 버전 1902 이상에서는 계층 구조의 CAS(중앙 관리 사이트)에서 CMPivot을 실행할 수 있습니다. 기본 사이트는 여전히 클라이언트에 대한 통신을 처리합니다.

CAS에서 CMPivot을 실행하면 고속 메시지 구독 채널을 사용하여 기본 사이트와 통신합니다. CMPivot은 사이트 간 표준 SQL Server 복제를 사용하지 않습니다. SQL Server 인스턴스 또는 SMS 공급자가 원격이거나 SQL Server Always On 가용성 그룹을 사용하는 경우 CMPivot에 대한 "이중 홉 시나리오"가 있습니다. "이중 홉 시나리오"에 대한 제한된 위임을 정의하는 방법에 대한 자세한 내용은 버전 1902부터 CMPivot을 참조하세요.

중요

CMPivot 문제를 해결할 때 관리 지점(MP) 및 사이트 서버의 SMS_MESSAGE_PROCESSING_ENGINE 자세한 정보 로깅을 사용하도록 설정하여 자세한 정보를 가져옵니다. 또한 클라이언트의 출력이 80KB보다 큰 경우 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.

ClientOperationID가 강조 표시된 CMPivot 창, 버전 1902

TaskID ClientAction 테이블에서 를 찾습니다. 는 TaskID ClientAction 테이블의 에 해당 UniqueID 합니다.

select * from ClientAction where ClientOperationId=<id>

에서 BgbServer.logSQL Server 수집한 를 찾아 TaskID 을 확인합니다PushID. 에 TaskID 레이블이 지정됩니다 TaskGUID. 예를 들면

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"(fast)"가 표시되지 않으면 데이터가 80KB를 초과할 수 있습니다. 이 경우 정보는 상태 메시지로 사이트 서버로 전송됩니다. 클라이언트 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는 메시지 처리 엔진으로 전송되기 전에 클라이언트의 응답에 할당됩니다.

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사용하도록 설정하면 클라이언트 결과가 처리됩니다. 에서 찾은 메시지 ID를 MP_RelayMsgMgr.log사용합니다. 처리 로그 항목은 다음 예제와 유사합니다.

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.logPushID 찾아 보고하거나 실패한 클라이언트 수를 확인합니다.

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 테이블에서 를 찾습니다. 는 TaskID ClientAction 테이블의 에 해당 UniqueID 합니다.

select * from ClientAction where ClientOperationId=<id>

에서 BgbServer.logSQL에서 수집한 를 찾 TaskID 습니다. 레이블이 로 지정됩니다 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\. 다음 위치에서 파일을 찾습니다.

  • 들어오는
  • 손상
  • 프로세스

를 사용하여 다음 SQL 쿼리를 통해 CMPivot에 대한 모니터링 보기를 확인합니다 TaskID.

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

참고

버전 1810 이상을 사용하는 클라이언트의 경우 출력이 80KB보다 크지 않으면 상태 메시징이 사용되지 않습니다. 이러한 경우 CMPivot 문제를 해결할 때 의원 및 사이트 서버의 SMS_MESSAGE_PROCESSING_ENGINE 자세한 정보 로깅을 사용하도록 설정할 때 자세한 정보를 얻을 수 있습니다. 자세한 로깅을 사용하도록 설정하는 방법에 대한 자세한 내용은 사이트 서버 로깅 옵션을 참조하세요.

문제를 해결하려면 다음 로그를 참조하세요.

  • MP_Relay.log
  • SMS_MESSAGE_PROCESSING_ENGINE.log

다음 단계