Rozwiązywanie problemów z programem CMPivot
CMPivot to narzędzie, które zapewnia dostęp do stanu urządzeń w czasie rzeczywistym w danym środowisku. Narzędzie CMPivot uruchamia zapytanie na wszystkich aktualnie połączonych urządzeniach w kolekcji docelowej i zwraca wyniki.
Czasami może być konieczne rozwiązywanie problemów z programem CMPivot. Jeśli na przykład komunikat o stanie z klienta do programu CMPivot zostanie uszkodzony, serwer lokacji nie może przetworzyć komunikatu. Ten artykuł ułatwia zrozumienie przepływu informacji dotyczących programu CMPivot.
Rozwiązywanie problemów z programem CMPivot w wersji 1902 lub nowszej
W programie Configuration Manager w wersji 1902 lub nowszej można uruchomić program CMPivot z centralnej lokacji administracyjnej (CAS) w hierarchii. Lokacja główna nadal obsługuje komunikację z klientem.
Po uruchomieniu programu CMPivot z usługi CAS używa on szybkiego kanału subskrypcji komunikatów do komunikowania się z lokacją główną. Program CMPivot nie używa standardowej replikacji programu SQL Server między lokacjami. Jeśli wystąpienie programu SQL Server lub dostawca programu SMS jest zdalne lub używasz zawsze włączonej grupy dostępności programu SQL Server, będziesz mieć "scenariusz podwójnego przeskoku" dla programu CMPivot. Aby uzyskać informacje na temat definiowania ograniczonego delegowania dla "scenariusza podwójnego przeskoku", zobacz CMPivot począwszy od wersji 1902.
Ważna
Podczas rozwiązywania problemów z programem CMPivot włącz pełne rejestrowanie punktów zarządzania i SMS_MESSAGE_PROCESSING_ENGINE serwera lokacji, aby uzyskać więcej informacji. Ponadto, jeśli dane wyjściowe klienta są większe niż 80 KB, włącz pełne rejestrowanie na serwerze MP i składniku SMS_STATE_SYSTEM serwera lokacji. Aby uzyskać informacje o sposobie włączania pełnego rejestrowania, zobacz Opcje rejestrowania serwera lokacji.
Pobieranie informacji z serwera lokacji
Domyślnie pliki dziennika serwera lokacji znajdują się w C:\Program Files\Microsoft Configuration Manager\logs
folderze . Ta lokalizacja może być inna, jeśli określono inny niż domyślny katalog instalacyjny lub odciążono elementy, takie jak dostawca programu SMS, na inny serwer. Jeśli uruchomisz polecenie CMPivot z serwera CAS, dzienniki znajdują się na serwerze lokacji głównej.
smsprov.log
Poszukaj następujących wierszy:
Configuration Manager w wersji 1906:
Auditing: User <username> initiated client operation 145 to collection <CollectionId>.
Configuration Manager w wersji 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
to Script-Guid dla programu CMPivot. Ten identyfikator GUID można również wyświetlić w komunikatach o stanie inspekcji programu CMPivot.
Następnie znajdź identyfikator w oknie CMPivot. Ten identyfikator to ClientOperationID
.
Znajdź element TaskID
z tabeli ClientAction. Element TaskID
odpowiada wartości w UniqueID
tabeli ClientAction.
select * from ClientAction where ClientOperationId=<id>
W BgbServer.log
programie poszukaj danych zebranych TaskID
z programu SQL Server i zanotuj ciąg PushID
. Element TaskID
ma etykietę TaskGUID
. Przykład:
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
Dzienniki klientów
Po zapoznaniu się z informacjami z serwera lokacji sprawdź dzienniki klienta. Domyślnie dzienniki klienta znajdują się w C:\Windows\CCM\Logs
folderze .
W CcmNotificationAgent.log
programie poszukaj wpisów dziennika, które wyglądają jak następujące wiersze:
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.
Sprawdź Scripts.log
element TaskID
. W poniższym przykładzie zobaczysz: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}
Uwaga
Jeśli w programie nie widzisz komunikatu Scripts.log
"(fast)", dane prawdopodobnie mają ponad 80 KB. W takim przypadku informacje są wysyłane do serwera lokacji jako komunikat o stanie. Użyj klienta StateMessage.log
i serwera lokacji Statesys.log
.
Przeglądanie komunikatów na serwerze lokacji
Po włączeniu pełnego rejestrowania w punkcie zarządzania można zobaczyć, jak są obsługiwane przychodzące komunikaty klientów. W MP_RelayMsgMgr.log
pliku poszukaj elementu TaskID
.
W tym przykładzie MP_RelayMsgMgr.log
można zobaczyć identyfikator (GUID:83F67728-2E6D-4E4F-8075-ED035C31B783)
klienta i Task ID {9A4E59D2-2F5B-4067-A9FA-B99602A3A4A0}
element . Identyfikator komunikatu jest przypisywany do odpowiedzi klienta przed wysłaniem go do aparatu przetwarzania komunikatów:
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
Po włączeniu pełnego rejestrowania w SMS_MESSAGE_PROCESSING_ENGINE.log
programie są przetwarzane wyniki klienta. Użyj identyfikatora komunikatu znalezionego w pliku MP_RelayMsgMgr.log
. Wpisy dziennika przetwarzania są podobne do następującego przykładu:
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]
Porada
Jeśli podczas przetwarzania wystąpi wyjątek, możesz go przejrzeć, uruchamiając następujące zapytanie SQL i przeglądając kolumnę Wyjątek. Po przetworzeniu komunikatu nie będzie on już znajdować się w MPE_RequestMessages_Instant
tabeli.
select * from MPE_RequestMessages_Instant where MessageID=<ID from SMS_MESSAGE_PROCESSING_ENGINE.log>
W BgbServer.log
programie poszukaj elementu , PushID
aby wyświetlić liczbę klientów, którzy zgłosili lub zawiedli.
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)
Sprawdź widok monitorowania programu CMPivot z programu SQL Server przy użyciu polecenia TaskID
.
select * from vSMS_CMPivotStatus where TaskID='{9A4E59D2-2F5B-4067-A9FA-B99602A3A4A0}'
Rozwiązywanie problemów z programem CMPivot w wersji 1810 lub starszej
W programie Configuration Manager w wersji 1810 lub starszej serwer lokacji obsługuje komunikację z klientem.
Pobieranie informacji z serwera lokacji
Domyślnie pliki dziennika serwera lokacji znajdują się w C:\Program Files\Microsoft Configuration Manager\logs
folderze . Ta lokalizacja może być inna, jeśli określono inny niż domyślny katalog instalacyjny lub odciążono elementy, takie jak dostawca programu SMS, na inny serwer.
smsprov.log
Poszukaj tego wiersza:
Auditing: User <username> initiated client operation 135 to collection <CollectionId>.
Znajdź identyfikator w oknie CMPivot. Ten identyfikator to ClientOperationID
.
Znajdź element TaskID
z tabeli ClientAction. Element TaskID
odpowiada wartości w UniqueID
tabeli ClientAction.
select * from ClientAction where ClientOperationId=<id>
W BgbServer.log
programie poszukaj danych zebranych w języku TaskID
SQL. Jest oznaczona etykietą TaskGUID
. Przykład:
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
Dzienniki klientów
Po zapoznaniu się z informacjami z serwera lokacji sprawdź dzienniki klienta. Domyślnie dzienniki klienta znajdują się w C:\Windows\CCM\Logs
folderze .
W CcmNotificationAgent.log
programie poszukaj dzienników, które są podobne do następującego wpisu:
Error! Bookmark not defined.+PFNjcmlwdEhhc2ggU2NyaXB0SGFzaEFsZz0nU0hBMjU2Jz42YzZmNDY0OGYzZjU3M2MyNTQyNWZiNT
g2ZDVjYTIwNzRjNmViZmQ1NTg5MDZlMWI5NDRmYTEzNmFiMDE0ZGNjPC9TY3JpcHRIYXNoPjxTY3Jp (truncated log entry)
Poszukaj pliku Scripts.log
TaskID
. W poniższym przykładzie widzimy 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}
Zajrzyj do pliku StateMessage.log
. W poniższym przykładzie widać, że TaskID
znajduje się on w dolnej części komunikatu obok <Param>
pozycji :
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)
Przeglądanie komunikatów na serwerze lokacji
Otwórz statesys.log
, aby sprawdzić, czy komunikat został odebrany i przetworzony. W poniższym przykładzie widać TaskID
w dolnej części komunikatu obok <Param>
. Włącz pełne rejestrowanie składnika SMS_STATE_SYSTEM, aby wyświetlić te wpisy dziennika.
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>~~'
Jeśli komunikat nie został przetworzony, sprawdź skrzynkę odbiorczą komunikatu o stanie. Domyślna lokalizacja skrzynki odbiorczej to C:\Program Files\Microsoft Configuration Manager\inboxes\auth\statesys.box\
. Poszukaj plików w tych lokalizacjach:
- Przychodzący
- Uszkodzony
- Proces
Sprawdź widok monitorowania programu CMPivot za pomocą następującego zapytania SQL przy użyciu TaskID
polecenia :
select * from vSMS_CMPivotStatus where TaskID='{F8C7C37F-B42B-4C0A-B050-2BB44DF1098A}'
Uwaga
W przypadku klientów korzystających z wersji 1810 lub nowszej komunikaty o stanie nie są używane, chyba że dane wyjściowe są większe niż 80 KB. Podczas rozwiązywania problemów z programem CMPivot w takich przypadkach można uzyskać więcej informacji po włączeniu pełnego rejestrowania na serwerach deputowanych i SMS_MESSAGE_PROCESSING_ENGINE serwera lokacji. Aby uzyskać informacje na temat włączania pełnego rejestrowania, zobacz Opcje rejestrowania serwera lokacji.
Aby rozwiązać problemy, zapoznaj się z następującymi dziennikami:
MP_Relay.log
SMS_MESSAGE_PROCESSING_ENGINE.log