Geavanceerde tips voor probleemoplossing voor inhoudsdistributie
In dit artikel vindt u enkele geavanceerde tips voor probleemoplossing waarmee u problemen met de distributie van inhoud kunt identificeren en oplossen.
Oorspronkelijke productversie: Configuration Manager current branch, Microsoft System Center 2012 Configuration Manager, Microsoft System Center 2012 R2 Configuration Manager
Uitgebreide logboekregistratie inschakelen
PkgXferMgr.log
Voor Package Transfer Manager biedt uitgebreide logboekregistratie meer informatie in het logboek over het kopieerproces van inhoud, bestandshashes en taakplanning. Uitgebreide logboekregistratie kan worden ingeschakeld door de volgende registerwaarde in te stellen op 0:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\SMS_PACKAGE_TRANSFER_MANAGER\LoggingLevel
Voor Package Transfer Manager biedt logboekregistratie voor foutopsporing meer informatie over het kopieerproces van inhoud. Logboekregistratie voor foutopsporing kan worden ingeschakeld door de volgende registerwaarde in te stellen op 1:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\SMS_PACKAGE_TRANSFER_MANAGER\DebugLogging
Opmerking
Voor deze registerwijziging(en) hoeft de service niet opnieuw te worden gestart
SMS_Executive
.Clientlogboeken (inclusief pull-DP- en beheerpuntlogboeken)
Uitgebreide logboekregistratie kan worden ingeschakeld door de volgende registerwaarde in te stellen op 0:
HKEY_LOCAL_MACHINE\Software\Microsoft\CCM\Logging\@GLOBAL\LogLevel
Logboekregistratie voor foutopsporing kan worden ingeschakeld door de volgende registerwaarde in te stellen als REG_SZ met de waarde True:
HKEY_LOCAL_MACHINE\Software\Microsoft\CCM\Logging\DebugLogging\Enabled
De grootte van het CCM-logboek kan worden verhoogd tot 5M door de volgende registerwaarde in te stellen op 5242880 (decimaal)
HKEY_LOCAL_MACHINE\Software\Microsoft\CCM\Logging\@GLOBAL\LogMaxSize
Daarnaast kunt u de DWORD-waarde voor de volgende registerwaarde bewerken om het aantal geschiedenislogboekbestanden te verhogen dat moet worden bewaard:
HKEY_LOCAL_MACHINE\Software\Microsoft\CCM\Logging\@GLOBAL\LogMaxHistory
Opmerking
Voor deze registerwijziging(en) moet de service opnieuw worden gestart
SMS Agent Host
.StateSys.log
Uitgebreide logboekregistratie voor StateSys.log kan worden ingeschakeld door de volgende registerwaarde in te stellen op 1:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\COMPONENTS\SMS_STATE_SYSTEM\Verbose logging
Opmerking
Voor deze wijziging van
SMS_Executive
de registersleutel hoeft de service niet opnieuw te worden gestart.(Algemeen - alleen siteserver) SQL-query's
Voor informatie over SQL-query's die worden uitgevoerd door
ConfigMgr
onderdelen, kan SQL-tracering worden ingeschakeld door de volgende registerwaarde in te stellen op 1:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\SqlEnabled
Met deze registerwaarde voegt u SQL-traceringslogboeken toe voor alle siteserverlogboeken. Dit moet alleen tijdelijk worden gedaan tijdens het oplossen van problemen en moet worden uitgeschakeld nadat de relevante logboeken zijn opgeslagen.
Opmerking
Voor deze registerwijziging hoeft de service niet opnieuw te worden gestart
SMS_Executive
.(Algemeen - alleen siteserver) Logboekarchivering inschakelen
Er zijn situaties waarin het probleem niet op aanvraag wordt gereproduceerd en terwijl er wordt gewacht tot het probleem wordt gereproduceerd, er een risico bestaat dat logboeken worden overgerold. In dergelijke situaties kan het inschakelen van logboekarchivering handig zijn, omdat u hierdoor meer historische logboeken kunt hebben. Dit is alleen relevant voor siteserverlogboeken.
Logboekarchivering kan worden ingeschakeld door de volgende registerwaarden in te stellen:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\ArchiveEnabled
= 1HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\ArchivePath
= <ArchiveLocation>Nadat logboekarchivering is ingeschakeld, worden de roll-over-logboeken door ConfigMgr gearchiveerd in ArchiveLocation <>en worden 10 kopieën van elk logboek bewaard.
Stel de volgende registerwaarde in op 20 om het aantal kopieën voor een specifiek onderdeel te verhogen wanneer logboekarchivering is ingeschakeld:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\COMPONENT_NAME\LogMaxHistory
Opmerking
Voor deze registerwijziging(en) moet de service opnieuw worden gestart
SMS_Executive
.(Per logboek - alleen siteserver) De grootte van het logboekbestand vergroten
Als u de grootte van het logboekbestand voor een afzonderlijk logboek wilt vergroten naar 50 MB, stelt u de onderdeelspecifieke registerwaarde in op 52428800 (decimaal):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\COMPONENT_NAME\MaxFileSize
Opmerking
Voor deze registerwijziging moet de service opnieuw worden gestart
SMS_Executive
.
Gecomprimeerde kopie van een pakket opnieuw verzenden naar een site
Wanneer een pakket voor het eerst naar een site wordt gedistribueerd, verzendt DistMgr een gecomprimeerde kopie van het pakket naar de site. Nadat het pakket is geëxtraheerd in de inhoudsbibliotheek op de site, wordt de lokale kopie van de inhoud gebruikt om het pakket naar DEP's te verzenden zolang dezelfde pakketversie wordt gedistribueerd naar de DP's op de site.
Er zijn enkele gevallen waarin het nodig is om een site af te dwingen de gecomprimeerde kopie van een pakket opnieuw te verzenden naar een opgegeven site. Dit is met name vereist wanneer:
- Inhoud ontbreekt in de inhoudsbibliotheek (
PkgLib
,DataLib
ofFileLib
) op een primaire of secundaire siteserver zelf. - DistMgr.log klaagt voortdurend dat de inhoud niet is aangekomen vanaf de bovenliggende site (bijvoorbeeld: 'De inhoud voor het pakket CS100026 nog niet is aangekomen vanaf site CS1, probeert het later opnieuw').
In de meeste gevallen wordt het bericht 'De inhoud voor het pakket CS100026 nog niet is aangekomen van site CS1, zal het later opnieuw proberen' tijdelijk vastgelegd terwijl de pakketinhoud wordt verzonden. Wanneer u dit bericht ziet, bekijkt u de logboeken afzender/despooler om ervoor te zorgen dat er geen problemen zijn met sitecommunicatie. Raadpleeg Een pakket distribueren naar DP over sites voor meer informatie over de logboekstroom.
Hoe weet DistMgr of op de huidige site een kopie van het pakket is geïnstalleerd
DistMgr controleert of er een rij type 1 is voor PkgStatus
het pakket voor de betreffende pakketversie. Als er een rij type 1 is voor de site met status = geïnstalleerd, wordt de lokale kopie van de pakketinhoud gebruikt om naar de DC's te verzenden. Als er geen rij Type 1 in PkgStatus
staat, betekent dit dat de pakketinhoud nog niet is geïnstalleerd op de siteserver.
Heeft herdistributie van pakket naar DP colocated op de siteserver veroorzaakt dat de gecomprimeerde kopie van het pakket opnieuw wordt verzonden
Nee. Het opnieuw distribueren van het pakket is afhankelijk van de site die de pakketinhoud al in de pakketbronmap heeft. Als het pakket op een bepaald moment naar de site is verzonden en is gemarkeerd als Geïnstalleerd, doet een herdistributieactie op de DP die op de siteserver is geplaatst, niets omdat DistMgr denkt dat de inhoud al is geïnstalleerd en de volgende regel wordt vastgelegd in DistMgr.log:
Het distributiepunt bevindt zich op de siteserver en het pakket is een inhoudstypepakket. Er is niets om overheen te kopiëren.
Wat als de inhoud ontbreekt in de inhoudsbibliotheek op de pakketbronsite
Als de inhoud ontbreekt in de inhoudsbibliotheek op de pakketbronsite, helpt het opnieuw instellen van de SourceVersion
niet. De enige manier om de ontbrekende inhoud opnieuw in te vullen, is door het pakket bij te werken. Het bijwerken van het pakket zorgt ervoor dat de pakketbronsite een momentopname van het pakket maakt van de bronlocatie van het pakket en de inhoud naar de inhoudsbibliotheek schrijft.
Hoe kan ik de pakketbronsite dwingen om de gecomprimeerde kopie van het pakket opnieuw te verzenden naar een specifieke site
Nadat u hebt bevestigd dat de pakketbronsite de vereiste inhoud heeft, is het mogelijk om de pakketbronsite af te dwingen het pakket-PCK-bestand opnieuw te verzenden naar een specifieke site door in te stellen SourceVersion
op 0 voor de rij Type 1 in PkgStatus
voor de betreffende site. Deze rij kan worden geïdentificeerd door de volgende SQL-query uit te voeren op de database van de pakketbronsite na het vervangen van de PACKAGEID en SITECODE van het gewenste pakket en de gewenste site:
SELECT * FROM PkgStatus WHERE Type = 1 AND ID = 'PACKAGEID' AND SiteCode = 'SITECODE'
Nadat u hebt bevestigd dat deze query een unieke en juiste rij retourneert, wordt de onderstaande query opnieuw ingesteld SourceVersion
op 0:
UPDATE PkgStatus SET SourceVersion = 0 WHERE Type = 1 AND ID = 'PACKAGEID' AND SiteCode = 'SITECODE'
Na het opnieuw instellen van de SourceVersion
op 0 voor de rij Type 1, wordt het herdistribueren van het pakket naar een DP in de betreffende site geforceerd dat de pakketbronsite de gecomprimeerde kopie van het pakket opnieuw naar de betrokken site stuurt.
Opmerking
Het is erg belangrijk om de bovenstaande query uit te voeren op de site die eigenaar is van het pakket, d.w.z. de pakketbronsite.
Relevante tabellen voor inhoudsdistributie
SMSPackages
- Bevat een lijst met alle pakkettenInteressante kolommen:
Kolom Waarden Actie 0 - GEEN
1 - UPDATE
2 - TOEVOEGEN
3 - VERWIJDEREN
4 - VALIDEREN
5 - ANNULERENPackageType 0 - Regulier pakket
3 - Stuurprogrammapakket
4 - Takenreeks
5 - Software Updates-pakket
6 - Pakket apparaatinstellingen
7 - Pakket voor virtuele apps
8 - Inhoudspakket (toepassing)
257 - Installatiekopieën van het besturingssysteem
258 - Opstartinstallatiekopie
259 - Os-installatiepakket
260 - VHD-pakketPkgServers
- Bevat een lijst van alle pakketten, samen met de DC's waarop ze momenteel zijn gericht.Interessante kolommen:
Kolom Waarden Actie 0 - GEEN
1 - UPDATE
2 - TOEVOEGEN
3 - VERWIJDEREN
4 - VALIDEREN
5 - ANNULERENPkgStatus
- Bevat een lijst van de huidige pakketstatus voor elk pakket voor elke DP.Interessante kolommen:
Kolom Waarden Type 1 - SITE (MASTER)
2 - DP (COPY)
Type 1 rijen worden gemaakt voor elke site waarop het pakket is gericht. PkgServer voor deze rij is de FQDN van de siteserver.
Er worden type 2 rijen gemaakt voor elke DP waarop het pakket is gericht. PkgServer is de DP NALPATH.Status 0 - GEEN
1 - VERZONDEN
2 - ONTVANGEN
3 - GEÏNSTALLEERD
4 - PROBEER HET OPNIEUW
5 - MISLUKT
6 - VERWIJDERD
7 - VERWIJDEREN IN BEHANDELING (niet gebruikt)
8 - VERWIJDEREN IS MISLUKT
9 - PROBEER OPNIEUW TE VERWIJDERENDistributionJobs
- Bevat een lijst met Package Transfer Manager-taken, samen met hun huidige status.Interessante kolommen:
Kolom Waarden Actie 0 - GEEN
1 - UPDATE
2 - TOEVOEGEN
3 - VERWIJDEREN
4 - VALIDEREN
5 - ANNULERENStatus 0 - IN BEHANDELING
1 - GEREED
2 - GESTART
3 - OVERSCHRIJDINGEN
4 - OPNIEUW OPSTARTEN IN BEHANDELING
5 - VOLTOOID
6 - MISLUKT
7 - GEANNULEERD
8 - OPGESCHORTDistributionPoints
- Bevat een lijst met alle distributiepunten.Interessante kolommen:
Kolom Waarden Actie 0 - GEEN
1 - UPDATE
2 - TOEVOEGEN
3 - VERWIJDEREN
4 - VALIDEREN
5 - ANNULERENPullDPResponse
- Bevat tijdelijk het pakketstatusantwoord dat is verzonden vanuit de pull-DP's. DistMgr verwerkt het antwoord en werkt bijPkgStatus
.Interessante kolommen:
Kolom Waarden ActionState 1 - GESLAAGD
2 - WAARSCHUWING
4 - FOUT
8 - DOWNLOAD GESTART
16 - DOWNLOADEN WORDT UITGEVOERD
32 - GEDOWNLOAD
64 - GEANNULEERD
128 - ANNULERING AANGEVRAAGDPkgNotification
- Meldingstabel bewaakt door SMSDBMON om DistMgr te activeren om een pakket te verwerken. De kolom Type definieert het type pakketmelding. Rijen in deze tabel worden verwijderd nadat SMSDBMON DistMgr heeft geactiveerd.Interessante kolommen:
Kolom Waarden Type 0 - ONBEKEND
1 - PAKKET
2 - PROGRAMMA
4 - PAKKETSERVER (DP)
8 - PAKKETTOEGANGSACCOUNT
15 - ALLEPull DP-statusberichten - Lijst met statusbericht-id's die zijn gegenereerd door pull DP
Interessante kolommen:
Kolom Waarden Status-id 1 - GESLAAGD
2 - WAARSCHUWING
4 - FOUT
8 - DOWNLOAD GESTART
16 - DOWNLOADEN WORDT UITGEVOERD
32 - GEDOWNLOAD
64 - GEANNULEERDVoorbeeld van statusberichtrapport:
<Report> <ReportHeader> <Identification> <Machine> <ClientInstalled>0</ClientInstalled> <ClientType>1</ClientType> <Unknown>0</Unknown> <ClientID IDType="0" IDFlag="1">925b0ab0-247b-466b-be0f-93d7cb032c87</ClientID> <ClientVersion>5.00.0000.0000</ClientVersion> <NetBIOSName>P01PDP1.CONTOSO.COM</NetBIOSName> <CodePage>437</CodePage> <SystemDefaultLCID>1033</SystemDefaultLCID> </Machine> </Identification> <ReportDetails> <ReportContent>StateMessage</ReportContent> <ReportType>Full</ReportType> <Date>20190107200618.000000+000</Date> <Version>1.0</Version> <Format>1.1</Format> </ReportDetails> </ReportHeader> <ReportBody> <StateMessage MessageTime="20190107200618.000000+000" SerialNumber="3"> <Topic ID="P010000F" Type="902" IDType="0"/> <State ID="1" Criticality="0"/> <UserParameters Flags="0" Count="4"> <Param>P010000F</Param> <Param>["Display=\\P01PDP1.CONTOSO.COM\"]MSWNET:["SMS_SITE=P01"]\\P01PDP1.CONTOSO.COM\</Param> <Param>{04AD1BB3-5E54-457A-9873-DFB2E8035090}</Param> <Param/> </UserParameters> </StateMessage> </ReportBody> </Report>
Nuttige SQL-query's
Hier volgen enkele SQL-query's die nuttig kunnen zijn bij het oplossen van verschillende problemen met betrekking tot inhoudsdistributie.
Pakket-/DP-statusquery's
Alle mislukte pakketten/DC's
SELECT distinct DPSD.DPName, DPSD.PackageID, SP.Name, DPSD.MessageState, DPSD.LastStatusTime, DPSD.SiteCode FROM vSMS_DPStatusDetails DPSD JOIN SMSPackages_All SP ON DPSD.PackageID = SP.PkgID WHERE MessageState = 4
Alle actieve pakketten/DC's
SELECT distinct DPSD.DPName, DPSD.PackageID, SP.Name, DPSD.MessageState, DPSD.LastStatusTime, DPSD.SiteCode FROM vSMS_DPStatusDetails DPSD JOIN SMSPackages_All SP ON DPSD.PackageID = SP.PkgID WHERE MessageState = 2
Alle succespakketten /DC's
SELECT distinct DPSD.DPName, DPSD.PackageID, SP.Name, DPSD.MessageState, DPSD.LastStatusTime, DPSD.SiteCode FROM vSMS_DPStatusDetails DPSD JOIN SMSPackages_All SP ON DPSD.PackageID = SP.PkgID WHERE MessageState = 1
Alle pakketten/DC's met de status In uitvoering gedurende meer dan drie dagen
SELECT distinct DPSD.DPName, DPSD.PackageID, SP.Name, DPSD.MessageState, DPSD.LastStatusTime, DPSD.SiteCode FROM vSMS_DPStatusDetails DPSD JOIN SMSPackages_All SP ON DPSD.PackageID = SP.PkgID WHERE DPSD.LastStatusTime < DATEAdd(dd,-3,GETDate()) AND MessageState = 2
Alle pakket/DC's met de status Mislukt gedurende meer dan drie dagen
SELECT distinct DPSD.DPName, DPSD.PackageID, SP.Name, DPSD.MessageState, DPSD.LastStatusTime, DPSD.SiteCode FROM vSMS_DPStatusDetails DPSD JOIN SMSPackages_All SP ON DPSD.PackageID = SP.PkgID WHERE DPSD.LastStatusTime < DATEAdd(dd,-3,GETDate()) AND MessageState = 4
Aantal alle statussen
SELECT MessageState, COUNT(MessageState) AS [Count] FROM vSMS_DPStatusDetails WHERE PackageID <> '' GROUP BY MessageState
Aantal pakketstatussen per DP
SELECT DPName, CASE WHEN MessageState = 1 THEN 'Success' WHEN MessageState = 2 THEN 'InProgress' WHEN MessageState = 4 THEN 'Failed' END AS [State], COUNT(MessageState) AS [Count] FROM vSMS_DPStatusDetails WHERE PackageID <> '' AND DPName = 'PS1DP1.CONTOSO.COM' GROUP BY DPName, MessageState ORDER BY DPName
Status van alle DC's voor een bepaald pakket
SELECT DPName, CASE WHEN MessageState = 1 THEN 'Success' WHEN MessageState = 2 THEN 'InProgress' WHEN MessageState = 4 THEN 'Failed' END AS [State] FROM vSMS_DPStatusDetails WHERE PackageID = '<PackageID>' GROUP BY DPName, MessageState ORDER BY State
Aantal DP-statussen per pakket
SELECT CASE WHEN MessageState = 1 THEN 'Success' WHEN MessageState = 2 THEN 'InProgress' WHEN MessageState = 4 THEN 'Failed' END AS [State], COUNT(MessageState) AS [Count] FROM vSMS_DPStatusDetails WHERE PackageID = '<PackageID>' GROUP BY MessageState
Pakket/DP huidige status
SELECT distinct DPSD.DPName, DPSD.PackageID, SP.Name, DPSD.LastStatusTime, DPSD.SiteCode, DPSD.MessageState, CASE WHEN MessageState = 1 THEN 'Success' WHEN MessageState = 2 THEN 'InProgress' WHEN MessageState = 4 THEN 'Failed' END AS [State] FROM vSMS_DPStatusDetails DPSD JOIN SMSPackages_All SP ON DPSD.PackageID = SP.PkgID WHERE DPName = 'PS1DP1.CONTOSO.COM' AND DPSD.PackageID = '<PackageID>'
Zwevende DP-verwijzingen zoeken
De onderstaande query kan worden gebruikt om te bepalen of er nog zwevende rijen in de database zijn voor een DP die zich niet meer in de omgeving bevindt. Er kunnen zwevende rijen zijn als de DP niet correct is verwijderd.
DECLARE @DPName NVARCHAR(100)
SET @DPName = 'PS1DP.CONTOSO.COM'
SELECT * FROM ContentDPMap WHERE ServerName = @DPName
SELECT * FROM DistributionPoints WHERE ServerName = @DPName
SELECT * FROM DPInfo WHERE ServerName = @DPName
SELECT * FROM PkgServers_G WHERE NALPath like '%' + @DPName + '%'
SELECT * FROM PkgServers_L WHERE NALPath like '%' + @DPName + '%'
SELECT * FROM PkgStatus_G WHERE PkgServer like '%' + @DPName + '%'
SELECT * FROM PkgStatus_L WHERE PkgServer like '%' + @DPName + '%'
SELECT * FROM SysResList WHERE RoleName = 'SMS Distribution Point' AND ServerName = @DPName
SELECT * FROM SC_SysResUse WHERE NALPath like '%' + @DPName + '%' AND RoleTypeID = 3
Vergelijkbare query voor een specifieke DP in een specifieke site:
DECLARE @DPName NVARCHAR(100)
DECLARE @DPSiteCode NVARCHAR(3)
SET @DPName = 'DPNAME.CONTOSO.COM'
SET @DPSiteCode = 'PS1'
SELECT * FROM ContentDPMap WHERE ServerName = @DPName AND SiteCode = @DPSiteCode
SELECT * FROM DistributionPoints WHERE ServerName = @DPName AND SMSSiteCode = @DPSiteCode
SELECT * FROM DPInfo WHERE ServerName = @DPName AND SiteCode = @DPSiteCode
SELECT * FROM PkgServers_L WHERE NALPath like '%' + @DPName + '%' AND SiteCode = @DPSiteCode
SELECT * FROM PkgServers_G WHERE NALPath like '%' + @DPName + '%' AND SiteCode = @DPSiteCode
SELECT * FROM PkgStatus_L WHERE PkgServer like '%' + @DPName + '%' AND SiteCode = @DPSiteCode
SELECT * FROM PkgStatus_G WHERE PkgServer like '%' + @DPName + '%' AND SiteCode = @DPSiteCode
SELECT * FROM SysResList WHERE RoleName = 'SMS Distribution Point' AND ServerName = @DPName AND SiteCode = @DPSiteCode
SELECT * FROM SC_SysResUse WHERE NALPath like '%' + @DPName + '%SMS_SITE=' + @DPSiteCode + '%' AND RoleTypeID = 3
Eigenschappen van sitebeheerbestand (SCF)
SCF-eigenschappen voor DistMgr voor huidige site
SELECT SD.SiteCode, SC.ComponentName, SCP.Name, SCP.Value1, SCP.Value2, SCP.Value3 FROM SC_Component SC JOIN SC_SiteDefinition SD ON SD.SiteNumber = SC.SiteNumber JOIN SC_Component_Property SCP ON SCP.ComponentID = SC.ID WHERE SD.SiteCode = dbo.fnGetSiteCode() AND SC.ComponentName = 'SMS_DISTRIBUTION_MANAGER'
SCF-eigenschappen voor een DP
SELECT SRU.RoleName, SRU.ServerName, SRUP.* FROM vSMS_SC_SysResUse SRU JOIN vSMS_SC_SysResUse_Properties SRUP ON SRU.ID = SRUP.ID WHERE SRU.RoleName = 'SMS Distribution Point' AND SRU.ServerName = 'PS1DP1.CONTOSO.COM'
Pakketten met opgegeven software-update
Geef alle pakketten weer die de opgegeven unieke update-id bevatten.
SELECT distinct UI.ArticleID, CI.CI_UniqueID, CP.PkgID, P.Name FROM v_UpdateInfo UI
JOIN v_ConfigurationItems CI ON UI.CI_ID = CI.CI_ID
JOIN v_CIContents_All CIC ON CI.CI_ID = CIC.CI_ID
JOIN CI_ContentPackages CP ON CP.Content_ID = CIC.Content_ID
JOIN v_Package P ON CP.PkgID = P.PackageID
WHERE CI.CI_UniqueID = '<UniqueID>'