Dela via


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 = 1

    HKEY_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:

  1. Innehållet saknas i innehållsbiblioteket (PkgLib, DataLibeller FileLib) på en primär eller sekundär platsserver.
  2. 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 PkgStatusinnebä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 paket

    Intressanta kolumner:

    Kolumn Värden
    Åtgärd 0 – INGEN
    1 – UPPDATERA
    2 – LÄGG TILL
    3 – TA BORT
    4 – VALIDERA
    5 – AVBRYT
    PackageType 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-paket
  • PkgServers - 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 – AVBRYT
  • PkgStatus – 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 IGEN
  • DistributionJobs – 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 – AVBRYT
    Tillstånd 0 – VÄNTAR
    1 – KLAR
    2 – STARTAT
    3 – INPROGRESS
    4 – VÄNTAR PÅ OMSTART
    5 – KLART
    6 – MISSLYCKADES
    7 – AVBRUTEN
    8 – PAUSAD
  • DistributionPoints – 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 – AVBRYT
  • PullDPResponse – Innehåller tillfälligt paketstatussvaret som skickas från pull-DP:erna. DistMgr bearbetar svaret och uppdaterar PkgStatus.

    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ÄRD
  • PkgNotification – 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 – ALLA
  • Hä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 – AVBRUTEN

    Exempelrapport 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>'