Avancerade felsökningstips för innehållsdistribution
Den här artikeln innehåller några avancerade felsökningstips som hjälper dig att identifiera och lösa problem med innehållsdistribution.
Ursprunglig produktversion: Configuration Manager aktuell gren, Microsoft System Center 2012 Configuration Manager, Microsoft System Center 2012 R2 Configuration Manager
Aktivera utförlig loggning
PkgXferMgr.log
För Package Transfer Manager innehåller utförlig loggning mer information i loggen om processen för innehållskopiering, filhashvärden och jobbschemaläggning. Utförlig loggning kan aktiveras genom att ange följande registervärde till 0:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\SMS_PACKAGE_TRANSFER_MANAGER\LoggingLevel
För Package Transfer Manager innehåller felsökningsloggning mer information om processen för innehållskopiering. Felsökningsloggning kan aktiveras genom att ange följande registervärde till 1:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\SMS_PACKAGE_TRANSFER_MANAGER\DebugLogging
Obs!
Dessa registerändringar kräver inte någon omstart av
SMS_Executive
tjänsten.Klientloggar (inklusive pull DP- och hanteringsplatsloggar)
Utförlig loggning kan aktiveras genom att ange följande registervärde till 0:
HKEY_LOCAL_MACHINE\Software\Microsoft\CCM\Logging\@GLOBAL\LogLevel
Felsökningsloggning kan aktiveras genom att ange följande registervärde som REG_SZ med värdet True:
HKEY_LOCAL_MACHINE\Software\Microsoft\CCM\Logging\DebugLogging\Enabled
CCM-loggstorleken kan ökas till 5 M genom att ange följande registervärde till 5242880 (decimal)
HKEY_LOCAL_MACHINE\Software\Microsoft\CCM\Logging\@GLOBAL\LogMaxSize
Dessutom kan du redigera DWORD-värdet för följande registervärde för att öka antalet loggfiler för historik som ska behållas:
HKEY_LOCAL_MACHINE\Software\Microsoft\CCM\Logging\@GLOBAL\LogMaxHistory
Obs!
Dessa registerändringar kräver en omstart av
SMS Agent Host
tjänsten.StateSys.log
Utförlig loggning för StateSys.log kan aktiveras genom att ange följande registervärde till 1:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\COMPONENTS\SMS_STATE_SYSTEM\Verbose logging
Obs!
Den här ändringen av registernyckeln kräver ingen omstart av
SMS_Executive
tjänsten.(Global – endast platsserver) SQL-frågor
För att få information om SQL-frågor som körs av
ConfigMgr
komponenter kan SQL-spårning aktiveras genom att ange följande registervärde till 1:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\SqlEnabled
Det här registervärdet lägger till SQL-spårningsloggning för alla platsserverloggar. Detta bör endast göras tillfälligt under felsökningen och bör inaktiveras när relevanta loggar har hämtats.
Obs!
Den här registerändringen kräver ingen omstart av
SMS_Executive
tjänsten.(Global – endast platsserver) Aktivera loggarkivering
Det finns tillfällen då problemet inte återskapas på begäran och i väntan på att problemet ska återskapas finns det risk för att loggarna rullas över. I dessa situationer kan det vara användbart att aktivera loggarkivering eftersom det gör att du kan ha mer historiska loggar. Detta är endast relevant för platsserverloggar.
Loggarkivering kan aktiveras genom att ange följande registervärden:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\ArchiveEnabled
= 1HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\ArchivePath
= <ArchiveLocation>När du har aktiverat loggarkivering arkiverar ConfigMgr de överrullningsade loggarna till <ArchiveLocation> och behåller 10 kopior av varje logg.
Om du vill öka antalet kopior som underhålls för en specifik komponent när loggarkivering är aktiverat anger du följande registervärde till 20:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\COMPONENT_NAME\LogMaxHistory
Obs!
Dessa registerändringar kräver en omstart av
SMS_Executive
tjänsten.(Per logg – endast platsserver) Öka loggfilens storlek
Om du vill öka loggfilens storlek för en enskild logg till 50 MB anger du det komponentspecifika registervärdet till 52428800 (decimal):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\COMPONENT_NAME\MaxFileSize
Obs!
Den här registerändringen kräver en omstart av
SMS_Executive
tjänsten.
Skicka om komprimerad kopia av ett paket till en plats
När ett paket först distribueras till en plats skickar DistMgr en komprimerad kopia av paketet till platsen. När paketet har extraherats i innehållsbiblioteket på webbplatsen används den lokala kopian av innehållet för att skicka paketet till IP-adresser så länge samma paketversion distribueras till IP-adresserna på webbplatsen.
Det finns några tillfällen då det är nödvändigt att tvinga en plats att skicka om den komprimerade kopian av ett paket till en angiven plats. Framför allt krävs detta när:
- Innehållet saknas i innehållsbiblioteket (
PkgLib
,DataLib
ellerFileLib
) på en primär eller sekundär platsserver. - DistMgr.log klagar konsekvent över att innehållet inte har kommit från den överordnade webbplatsen (till exempel: "Innehållet för paketet CS100026 inte har kommit från webbplatsen CS1 ännu, kommer att försöka igen senare").
I de flesta fall loggas meddelandet "Innehållet för paketet CS100026 inte har kommit från webbplatsen CS1 ännu, försöker igen senare" tillfälligt medan paketinnehållet överförs. När du ser det här meddelandet granskar du avsändar-/despoolerloggarna för att säkerställa att det inte finns några problem med platskommunikation. Läs Distribuera ett paket till DP på flera platser för att förstå loggflödet.
Hur vet DistMgr om den aktuella platsen har en kopia av paketet installerat
DistMgr kontrollerar om det finns en rad av typen 1 i PkgStatus
för paketet för den aktuella paketversionen. Om det finns en rad av typen 1 för platsen med Status = installerad används den lokala kopian av paketinnehållet för att skicka till IP-adresserna. Om det inte finns någon rad av typen 1 i PkgStatus
innebär det att paketinnehållet ännu inte har installerats på platsservern.
Omdistribuerar paketet till DP som samlokaliserats på platsservern får den komprimerade kopian av paketet att bli igenkänd
Nej. Omdistribuering av paketet är beroende av att webbplatsen redan har paketinnehållet i paketkällans katalog. Om paketet har skickats till platsen någon gång och markerats som Installerat, gör inte en omdistribueringsåtgärd på DP som samlokaliserats på platsservern något eftersom DistMgr tror att innehållet redan är installerat och följande rad loggas i DistMgr.log:
Distributionsplatsen finns på platsservern och paketet är ett innehållstypspaket. Det finns inget att kopiera över.
Vad händer om innehållet saknas i innehållsbiblioteket på paketkällans webbplats
Om innehållet saknas i innehållsbiblioteket på paketkällans webbplats hjälper det inte att återställa SourceVersion
innehållet. Det enda sättet att fylla i det innehåll som saknas är att uppdatera paketet. När paketet uppdateras tar paketkällan en ögonblicksbild från paketkällans plats och skriver innehållet till innehållsbiblioteket.
Hur gör jag för att tvinga paketkällan att skicka om den komprimerade kopian av paketet till en viss plats
När du har bekräftat att paketkällplatsen har det innehåll som krävs är det möjligt att tvinga paketkällplatsen att skicka paket-PCK-filen till en specifik plats igen genom att ange SourceVersion
0 för raden Typ 1 för PkgStatus
den berörda platsen. Den här raden kan identifieras genom att köra följande SQL-fråga på paketkällans databas efter att ha ersatt PACKAGEID och SITECODE för önskat paket och plats:
SELECT * FROM PkgStatus WHERE Type = 1 AND ID = 'PACKAGEID' AND SiteCode = 'SITECODE'
När du har bekräftat att den här frågan returnerar en unik och korrekt rad återställs SourceVersion
frågan nedan för den här raden till 0:
UPDATE PkgStatus SET SourceVersion = 0 WHERE Type = 1 AND ID = 'PACKAGEID' AND SiteCode = 'SITECODE'
När du har återställt SourceVersion
till 0 för raden Typ 1 kommer omdistribuering av paketet till valfri DP på den berörda platsen att tvinga paketkällan att skicka den komprimerade kopian av paketet till den berörda platsen igen.
Obs!
Det är mycket viktigt att köra ovanstående fråga på den plats som äger paketet, t.ex. paketkällplatsen.
Relevanta tabeller för innehållsdistribution
SMSPackages
– Innehåller en lista över alla paketIntressanta kolumner:
Kolumn Värden Åtgärd 0 – INGEN
1 – UPPDATERA
2 – LÄGG TILL
3 – TA BORT
4 – VALIDERA
5 – AVBRYTPackageType 0 – Vanligt paket
3 – Drivrutinspaket
4 – Aktivitetssekvens
5 – Software Uppdateringar Package
6 – Paket för enhetsinställningar
7 – Virtuellt apppaket
8 – Innehållspaket (program)
257 – Operativsystemavbildning
258 – Startavbildning
259 – Installationspaket för operativsystem
260 – VHD-paketPkgServers
- Innehåller en lista över alla paket tillsammans med de DPs som de för närvarande är riktade till.Intressanta kolumner:
Kolumn Värden Åtgärd 0 – INGEN
1 – UPPDATERA
2 – LÄGG TILL
3 – TA BORT
4 – VALIDERA
5 – AVBRYTPkgStatus
– Innehåller en lista över aktuell paketstatus för varje paket för varje DP.Intressanta kolumner:
Kolumn Värden Typ 1 – WEBBPLATS (MASTER)
2 – DP (COPY)
Skriv 1 rader skapas för varje plats som paketet är avsett för. PkgServer för den här raden är platsserverns FQDN.
Skriv 2 rader skapas för varje DP som paketet är avsett för. PkgServer är DP NALPATH.Status 0 – INGEN
1 – SKICKAT
2 – MOTTAGET
3 – INSTALLERAT
4 – FÖRSÖK IGEN
5 – MISSLYCKADES
6 – BORTTAGEN
7 – VÄNTAR PÅ ATT TA BORT (används inte)
8 – BORTTAGNINGEN MISSLYCKADES
9 – FÖRSÖK ATT TA BORT IGENDistributionJobs
– Innehåller en lista över Package Transfer Manager-jobb tillsammans med deras aktuella tillstånd.Intressanta kolumner:
Kolumn Värden Åtgärd 0 – INGEN
1 – UPPDATERA
2 – LÄGG TILL
3 – TA BORT
4 – VALIDERA
5 – AVBRYTTillstånd 0 – VÄNTAR
1 – KLAR
2 – STARTAT
3 – INPROGRESS
4 – VÄNTAR PÅ OMSTART
5 – KLART
6 – MISSLYCKADES
7 – AVBRUTEN
8 – PAUSADDistributionPoints
– Innehåller en lista över alla distributionsplatser.Intressanta kolumner:
Kolumn Värden Åtgärd 0 – INGEN
1 – UPPDATERA
2 – LÄGG TILL
3 – TA BORT
4 – VALIDERA
5 – AVBRYTPullDPResponse
– Innehåller tillfälligt paketstatussvaret som skickas från pull-DP:erna. DistMgr bearbetar svaret och uppdaterarPkgStatus
.Intressanta kolumner:
Kolumn Värden ActionState 1 – LYCKADES
2 – VARNING
4 – FEL
8 – NEDLADDNINGEN HAR STARTATS
16 – NEDLADDNING PÅGÅR
32 – NEDLADDAD
64 – AVBRUTEN
128 – ANNULLERING BEGÄRDPkgNotification
– Meddelandetabell som övervakas av SMSDBMON för att utlösa DistMgr för att bearbeta ett paket. Typkolumnen definierar typen av paketmeddelande. Rader i den här tabellen tas bort när SMSDBMON utlöser DistMgr.Intressanta kolumner:
Kolumn Värden Typ 0 – OKÄND
1 – PAKET
2 – PROGRAM
4 – PAKETSERVER (DP)
8 – PAKETÅTKOMSTKONTO
15 – ALLAHämta DP-tillståndsmeddelanden – Lista över tillståndsmeddelande-ID:t som genereras av pull DP
Intressanta kolumner:
Kolumn Värden Tillstånds-ID 1 – LYCKADES
2 – VARNING
4 – FEL
8 – NEDLADDNINGEN HAR STARTATS
16 – NEDLADDNING PÅGÅR
32 – NEDLADDAD
64 – AVBRUTENExempelrapport för tillståndsmeddelande:
<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>
Användbara SQL-frågor
Här följer några SQL-frågor som kan vara användbara när du felsöker olika problem som rör innehållsdistribution.
Paket-/DP-statusfrågor
Alla misslyckade paket/IP-adresser
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
Alla pågående paket/IP-adresser
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
Alla lyckade paket/IP-adresser
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
Alla paket/IP-adresser pågår i mer än tre dagar
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
Alla paket/IP-adresser i feltillstånd i mer än tre dagar
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
Antal alla tillstånd
SELECT MessageState, COUNT(MessageState) AS [Count] FROM vSMS_DPStatusDetails WHERE PackageID <> '' GROUP BY MessageState
Antal pakettillstånd 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
Tillstånd för alla IP-adresser för ett visst paket
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
Antal DP-tillstånd per paket
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
Aktuellt tillstånd för paket/DP
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>'
Hitta överblivna DP-referenser
Frågan nedan kan användas för att identifiera om det finns några överblivna rader kvar i databasen för en DP som inte längre finns i miljön. Det kan finnas överblivna rader om DP inte har tagits bort korrekt.
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
Liknande fråga för en specifik DP på en specifik plats:
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
Egenskaper för platskontrollfil (SCF)
SCF-egenskaper för DistMgr för den aktuella platsen
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-egenskaper för en 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'
Paket som innehåller angiven programuppdatering
Visa en lista över alla paket som innehåller den angivna uppdateringens unika ID.
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>'