Partager via


Conseils de dépannage avancés pour la distribution de contenu

Cet article fournit quelques conseils de dépannage avancés pour vous aider à identifier et à résoudre les problèmes de distribution de contenu.

Version du produit d’origine : Configuration Manager Current Branch, Microsoft System Center 2012 Configuration Manager, Microsoft System Center 2012 R2 Configuration Manager

Activez la journalisation commentée

  • PkgXferMgr.log

    Pour Package Transfer Manager, la journalisation détaillée fournit plus d’informations dans le journal sur le processus de copie de contenu, les hachages de fichiers et la planification des travaux. La journalisation détaillée peut être activée en définissant la valeur de Registre suivante sur 0 :

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\SMS_PACKAGE_TRANSFER_MANAGER\LoggingLevel

    Pour Package Transfer Manager, la journalisation du débogage fournit plus d’informations sur le processus de copie de contenu. La journalisation du débogage peut être activée en définissant la valeur de Registre suivante sur 1 :

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\SMS_PACKAGE_TRANSFER_MANAGER\DebugLogging

    Note

    Ces modifications de Registre ne nécessitent pas de redémarrage du SMS_Executive service.

  • Journaux du client (y compris les journaux de point de gestion et dp d’extraction)

    La journalisation détaillée peut être activée en définissant la valeur de Registre suivante sur 0 :

    HKEY_LOCAL_MACHINE\Software\Microsoft\CCM\Logging\@GLOBAL\LogLevel

    La journalisation du débogage peut être activée en définissant la valeur de Registre suivante comme REG_SZ avec la valeur True :

    HKEY_LOCAL_MACHINE\Software\Microsoft\CCM\Logging\DebugLogging\Enabled

    La taille du journal CCM peut être augmentée à 5M en définissant la valeur de Registre suivante sur 5242880 (décimal)

    HKEY_LOCAL_MACHINE\Software\Microsoft\CCM\Logging\@GLOBAL\LogMaxSize

    En outre, vous pouvez modifier la valeur DWORD pour la valeur de Registre suivante afin d’augmenter le nombre de fichiers journaux d’historique à conserver :

    HKEY_LOCAL_MACHINE\Software\Microsoft\CCM\Logging\@GLOBAL\LogMaxHistory

    Note

    Ces modifications de Registre nécessitent un redémarrage du SMS Agent Host service.

  • StateSys.log

    La journalisation détaillée des StateSys.log peut être activée en définissant la valeur de Registre suivante sur 1 :

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\COMPONENTS\SMS_STATE_SYSTEM\Verbose logging

    Note

    Cette modification de clé de Registre ne nécessite pas de redémarrage du SMS_Executive service.

  • (Global - Serveur de site uniquement) Requêtes SQL

    Pour obtenir des informations sur les requêtes SQL exécutées par ConfigMgr des composants, le suivi SQL peut être activé en définissant la valeur de Registre suivante sur 1 :

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\SqlEnabled

    Cette valeur de Registre ajoute la journalisation des traces SQL pour tous les journaux du serveur de site. Cette opération doit être effectuée temporairement lors de la résolution des problèmes et doit être désactivée après avoir obtenu les journaux appropriés.

    Note

    Cette modification du Registre ne nécessite pas de redémarrage du SMS_Executive service.

  • (Global - Serveur de site uniquement) Activer l’archivage des journaux

    Il existe des occasions où le problème ne se reproduit pas à la demande et en attendant que le problème se reproduise, il existe un risque de basculement des journaux d’activité. Dans ces situations, l’activation de l’archivage des journaux peut être utile, car elle vous permet d’avoir plus de journaux d’historique. Cela s’applique uniquement aux journaux du serveur de site.

    L’archivage des journaux peut être activé en définissant les valeurs de Registre suivantes :

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\ArchiveEnabled = 1

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\ArchivePath = <ArchiveLocation>

    Après avoir activé l’archivage des journaux, ConfigMgr archive les journaux roulés dans <ArchiveLocation> et conserve 10 copies de chaque journal.

    Pour augmenter le nombre de copies conservées pour un composant spécifique lorsque l’archivage des journaux est activé, définissez la valeur de Registre suivante sur 20 :

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\COMPONENT_NAME\LogMaxHistory

    Note

    Ces modifications de Registre nécessitent un redémarrage du SMS_Executive service.

  • (Par journal - serveur de site uniquement) Augmenter la taille du fichier journal

    Pour augmenter la taille du fichier journal d’un journal individuel à 50 Mo, définissez la valeur de Registre spécifique au composant sur 52428800 (décimal) :

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\COMPONENT_NAME\MaxFileSize

    Note

    Cette modification du Registre nécessite un redémarrage du SMS_Executive service.

Renvoyer une copie compressée d’un package sur un site

Lorsqu’un package est distribué pour la première fois sur un site, DistMgr envoie une copie compressée du package au site. Une fois que le package est extrait dans la bibliothèque de contenu sur le site, la copie locale du contenu est utilisée pour envoyer le package aux fournisseurs de services à condition que la même version du package soit distribuée aux adresses IP du site.

Il existe quelques occasions où il est nécessaire de forcer un site à renvoyer la copie compressée d’un package à un site spécifié. Plus particulièrement, cela est nécessaire quand :

  1. Le contenu est manquant dans la bibliothèque de contenu (PkgLibou DataLibFileLib) sur un serveur de site principal ou secondaire lui-même.
  2. DistMgr.log se plaint constamment du contenu qui n’est pas arrivé à partir du site parent (par exemple : « Le contenu du package CS100026 n’est pas encore arrivé à partir du site CS1, réessayera plus tard »).

Dans la plupart des cas, le message « Le contenu du package CS100026 n’est pas encore arrivé à partir du site CS1, réessayera plus tard » est enregistré temporairement pendant que le contenu du package est en transit. Lorsque vous voyez ce message, passez en revue les journaux de l’expéditeur/despooler pour vous assurer qu’il n’y a aucun problème avec les communications de site. Passez en revue Distribuer un package à DP sur plusieurs sites pour comprendre le flux de journal.

Comment DistMgr sait-il si le site actuel a une copie du package installé

DistMgr vérifie s’il existe une ligne PkgStatus type 1 pour le package pour la version du package en question. S’il existe une ligne de type 1 pour le site avec l’état = installé, la copie locale du contenu du package est utilisée pour envoyer les adresses IP. S’il n’existe aucune ligne PkgStatusde type 1, cela signifie que le contenu du package n’est pas encore installé sur le serveur de site.

Redistribue-t-il le package à DP colocalisé sur le serveur de site, car la copie compressée du package doit être réentée

Non. La redistribution du package s’appuie sur le site ayant déjà le contenu du package dans le répertoire source du package. Si le package a été envoyé au site à un moment donné et marqué comme installé, une action redistribuée sur le dp colocalisée sur le serveur de site ne fait rien, car DistMgr pense que le contenu est déjà installé et que la ligne suivante sera consignée dans DistMgr.log :

Le point de distribution se trouve sur le serveur de site et le package est un package de type de contenu. Il n’y a rien à copier.

Que se passe-t-il si le contenu est manquant dans la bibliothèque de contenu sur le site source du package

Si le contenu est manquant dans la bibliothèque de contenu sur le site source du package, la réinitialisation ne SourceVersion vous aidera pas. La seule façon de remplir le contenu manquant consiste à mettre à jour le package. La mise à jour du package entraîne la prise d’un instantané de package à partir de l’emplacement source du package et l’écriture du contenu dans la bibliothèque de contenu.

Comment faire forcer le site source du package à renvoyer la copie compressée du package à un site spécifique

Après avoir confirmé que le site source du package a le contenu requis, il est possible de forcer le site source du package à renvoyer le fichier PCK du package à un site spécifique en définissant SourceVersion la valeur 0 pour la ligne PkgStatus Type 1 du site concerné. Cette ligne peut être identifiée en exécutant la requête SQL suivante sur la base de données du site source du package après avoir remplacé packageID et SITECODE du package et du site souhaités :

SELECT * FROM PkgStatus WHERE Type = 1 AND ID = 'PACKAGEID' AND SiteCode = 'SITECODE'

Après avoir confirmé que cette requête retourne une ligne unique et correcte, l’exécution de la requête ci-dessous réinitialise SourceVersion cette ligne à 0 :

UPDATE PkgStatus SET SourceVersion = 0 WHERE Type = 1 AND ID = 'PACKAGEID' AND SiteCode = 'SITECODE'

Après avoir réinitialisé la SourceVersion valeur 0 pour la ligne Type 1, la redistribution du package sur n’importe quel dp du site concerné force le site source du package à renvoyer la copie compressée du package sur le site concerné.

Note

Il est très important d’exécuter la requête ci-dessus sur le site propriétaire du package, c’est-à-dire le site source du package.

Tables pertinentes pour la distribution de contenu

  • SMSPackages - Contient une liste de tous les packages

    Colonnes intéressantes :

    Colonne Valeurs
    Action 0 - AUCUN
    1 - UPDATE
    2 - AJOUTER
    3 - DELETE
    4 - VALIDER
    5 - ANNULER
    PackageType 0 - Package normal
    3 - Package de pilotes
    4 - Séquence de tâches
    5 - Package de mises à jour logicielles
    6 - Package paramètres de l’appareil
    7 - Package d’application virtuelle
    8 - Package de contenu (application)
    257 - Image du système d’exploitation
    258 - Image de démarrage
    259 - Package d’installation du système d’exploitation
    260 - Package VHD
  • PkgServers - Contient une liste de tous les packages ainsi que les fournisseurs de services auxquels ils sont actuellement ciblés.

    Colonnes intéressantes :

    Colonne Valeurs
    Action 0 - AUCUN
    1 - UPDATE
    2 - AJOUTER
    3 - DELETE
    4 - VALIDER
    5 - ANNULER
  • PkgStatus - Contient la liste de l’état actuel du package pour chaque package pour chaque dp.

    Colonnes intéressantes :

    Colonne Valeurs
    Type 1 - SITE (MASTER)
    2 - DP (COPY)

    Les lignes de type 1 sont créées pour chaque site auquel le package est ciblé. PkgServer pour cette ligne est le nom de domaine complet du serveur de site.

    Les lignes de type 2 sont créées pour chaque dp auquel le package est ciblé. PkgServer est le DP NALPATH.
    État 0 - AUCUN
    1 - ENVOYÉ
    2 - REÇU
    3 - INSTALLÉ
    4 - NOUVELLE TENTATIVE
    5 - ÉCHEC
    6 - SUPPRIMÉ
    7 - EN ATTENTE REMOVE (non utilisé)
    8 - ÉCHEC DE LA SUPPRESSION
    9 - RETRY REMOVE
  • DistributionJobs - Contient la liste des travaux du Gestionnaire de transfert de package, ainsi que leur état actuel.

    Colonnes intéressantes :

    Colonne Valeurs
    Action 0 - AUCUN
    1 - UPDATE
    2 - AJOUTER
    3 - DELETE
    4 - VALIDER
    5 - ANNULER
    État 0 - EN ATTENTE
    1 - PRÊT
    2 - DÉMARRÉ
    3 - INPROGRESS
    4 - REDÉMARRAGE EN ATTENTE
    5 - TERMINÉ
    6 - ÉCHEC
    7 - ANNULÉ
    8 - SUSPENDU
  • DistributionPoints - Contient une liste de tous les points de distribution.

    Colonnes intéressantes :

    Colonne Valeurs
    Action 0 - AUCUN
    1 - UPDATE
    2 - AJOUTER
    3 - DELETE
    4 - VALIDER
    5 - ANNULER
  • PullDPResponse - Contient temporairement la réponse d’état du package envoyée à partir des adresses IP d’extraction. DistMgr traite la réponse et les mises à jour PkgStatus.

    Colonnes intéressantes :

    Colonne Valeurs
    ActionState 1 - SUCCESS
    2 - AVERTISSEMENT
    4 - ERREUR
    8 - TÉLÉCHARGEMENT DÉMARRÉ
    16 - TÉLÉCHARGER EN COURS
    32 - TÉLÉCHARGÉ
    64 - ANNULÉ
    128 - ANNULATION DEMANDÉE
  • PkgNotification - Table de notification surveillée par SMSDBMON pour déclencher DistMgr pour traiter un package. La colonne type définit le type de notification de package. Les lignes de cette table sont supprimées après que SMSDBMON déclenche DistMgr.

    Colonnes intéressantes :

    Colonne Valeurs
    Type 0 - INCONNU
    1 - PACKAGE
    2 - PROGRAMME
    4 - PACKAGE SERVER (DP)
    8 - COMPTE D’ACCÈS AU PACKAGE
    15 - TOUT
  • Pull DP state messages - Liste des ID de message d’état déclenchés par pull DP

    Colonnes intéressantes :

    Colonne Valeurs
    État ID 1 - SUCCESS
    2 - AVERTISSEMENT
    4 - ÉCHEC
    8 - TÉLÉCHARGEMENT DÉMARRÉ
    16 - TÉLÉCHARGER EN COURS
    32 - TÉLÉCHARGÉ
    64 - ANNULÉ

    Exemple de rapport de message d’état :

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

Requêtes SQL utiles

Voici quelques requêtes SQL qui peuvent être utiles lors de la résolution de différents problèmes liés à la distribution de contenu.

Requêtes d’état de package/DP

  • Tous les packages/adresses IP ayant échoué

    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
    
  • Tous les packages/adresses IP en cours

    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
    
  • Tous les packages de réussite /fournisseurs de services

    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
    
  • Tous les packages/DPS en cours pendant plus de trois jours

    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
    
  • Tous les packages/adresses IP en état d’échec pendant plus de trois jours

    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
    
  • Nombre de tous les états

    SELECT MessageState,
    COUNT(MessageState) AS [Count]
    FROM vSMS_DPStatusDetails
    WHERE PackageID <> ''
    GROUP BY MessageState
    
  • Nombre d’états de package par 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
    
  • État de tous les fournisseurs de services pour un package donné

    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
    
  • Nombre d’états DP par package

    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
    
  • État actuel du package/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>'
    

Recherche de références DP orphelines

La requête ci-dessous peut être utilisée pour identifier s’il existe des lignes orphelines laissées dans la base de données pour un dp qui n’est plus dans l’environnement. Il peut y avoir des lignes orphelines si le DP n’a pas été supprimé correctement.

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

Requête similaire pour un DP spécifique dans un site spécifique :

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

Propriétés du fichier de contrôle de site (SCF)

  • Propriétés SCF pour DistMgr pour le site actuel

    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'
    
  • Propriétés SCF d’une 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'
    

Packages contenant la mise à jour logicielle spécifiée

Répertorie tous les packages contenant l’ID unique de mise à jour donné.

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