Compartir a través de


Sugerencias avanzadas de solución de problemas para la distribución de contenido

En este artículo se proporcionan algunas sugerencias de solución de problemas avanzadas que le ayudarán a identificar y resolver problemas de distribución de contenido.

Versión original del producto: rama actual de Configuration Manager, Microsoft System Center 2012 Configuration Manager, Microsoft System Center 2012 R2 Configuration Manager

Habilitación del registro detallado

  • PkgXferMgr.log

    Para el Administrador de transferencia de paquetes, el registro detallado proporciona más información en el registro sobre el proceso de copia de contenido, los hashes de archivos y la programación de trabajos. El registro detallado se puede habilitar estableciendo el siguiente valor del Registro en 0:

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

    Para el Administrador de transferencia de paquetes, el registro de depuración proporciona más información sobre el proceso de copia de contenido. El registro de depuración se puede habilitar estableciendo el siguiente valor del Registro en 1:

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

    Nota:

    Estos cambios del Registro no requieren un reinicio del SMS_Executive servicio.

  • Registros de cliente (incluye registros de punto de administración y dp de extracción)

    El registro detallado se puede habilitar estableciendo el siguiente valor del Registro en 0:

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

    El registro de depuración se puede habilitar estableciendo el siguiente valor del Registro como REG_SZ con el valor True:

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

    El tamaño del registro de CCM se puede aumentar a 5M estableciendo el siguiente valor del Registro en 5242880 (decimal)

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

    Además, puede editar el valor DWORD del siguiente valor del Registro para aumentar el número de archivos de registro del historial que se van a conservar:

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

    Nota:

    Estos cambios del Registro requieren un reinicio del SMS Agent Host servicio.

  • StateSys.log

    El registro detallado para StateSys.log se puede habilitar estableciendo el siguiente valor del Registro en 1:

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

    Nota:

    Este cambio de clave del Registro no requiere un reinicio del SMS_Executive servicio.

  • (Global: solo servidor de sitio) Consultas SQL

    Para obtener información sobre las consultas SQL ejecutadas por ConfigMgr componentes, el seguimiento de SQL se puede habilitar estableciendo el siguiente valor del Registro en 1:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\SqlEnabled

    Este valor del Registro agrega el registro de seguimiento de SQL para todos los registros del servidor de sitio. Esto solo debe realizarse temporalmente durante la solución de problemas y debe deshabilitarse después de obtener los registros pertinentes.

    Nota:

    Este cambio del Registro no requiere un reinicio del SMS_Executive servicio.

  • (Global: solo servidor de sitio) Habilitación del archivado de registros

    Hay ocasiones en las que el problema no se reproduce a petición y mientras espera a que el problema se reproduzca, existe el riesgo de que los registros se reproduzcan. En estas situaciones, habilitar el archivado de registros puede ser útil, ya que permite tener registros más históricos. Esto solo es relevante para los registros del servidor de sitio.

    El archivado de registros se puede habilitar estableciendo los siguientes valores del Registro:

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

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

    Después de habilitar el archivado de registros, ConfigMgr archivará los registros inscritos en <ArchiveLocation> y conservará 10 copias de cada registro.

    Para aumentar el número de copias mantenidas para un componente específico cuando está habilitado el archivado de registros, establezca el siguiente valor del Registro en 20:

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

    Nota:

    Estos cambios del Registro requieren un reinicio del SMS_Executive servicio.

  • (Por registro: solo servidor de sitio) Aumento del tamaño del archivo de registro

    Para aumentar el tamaño del archivo de registro de un registro individual a 50 MB, establezca el valor del Registro específico del componente en 52428800 (decimal):

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

    Nota:

    Este cambio del Registro requiere un reinicio del SMS_Executive servicio.

Volver a enviar una copia comprimida de un paquete a un sitio

Cuando un paquete se distribuye por primera vez a un sitio, DistMgr envía una copia comprimida del paquete al sitio. Después de extraer el paquete en la biblioteca de contenido del sitio, la copia local del contenido se usa para enviar el paquete a direcciones IP siempre que la misma versión del paquete se distribuya a los DP del sitio.

Hay algunas ocasiones en las que es necesario forzar que un sitio vuelva a enviar la copia comprimida de un paquete a un sitio especificado. En particular, esto es necesario cuando:

  1. Falta contenido de la biblioteca de contenido (PkgLib, DataLibo FileLib) en un propio servidor de sitio primario o secundario.
  2. DistMgr.log se queja constantemente del contenido que no ha llegado desde el sitio primario (por ejemplo: "El contenido del paquete CS100026 aún no ha llegado del sitio CS1, volverá a intentarlo más adelante").

En la mayoría de los casos, el mensaje "El contenido del paquete CS100026 aún no ha llegado del sitio CS1, volverá a intentarlo más tarde" se registra temporalmente mientras el contenido del paquete está en tránsito. Cuando vea este mensaje, revise los registros sender/despooler para asegurarse de que no hay ningún problema con las comunicaciones del sitio. Revise Distribuir un paquete a DP entre sitios para comprender el flujo de registro.

¿Cómo sabe DistMgr si el sitio actual tiene instalada una copia del paquete?

DistMgr comprueba si hay una fila de tipo 1 en PkgStatus para el paquete de la versión del paquete en cuestión. Si hay una fila de tipo 1 para el sitio con Estado = instalado, la copia local del contenido del paquete se usa para enviar a los PROVEEDORES. Si no hay ninguna fila de tipo 1 en PkgStatus, significa que el contenido del paquete aún no está instalado en el servidor de sitio.

Redistribuye el paquete a DP colocado en el servidor de sitio, lo que hace que la copia comprimida del paquete se vuelva a enviar.

No. Redistribuir el paquete se basa en el sitio que ya tiene el contenido del paquete en el directorio de origen del paquete. Si el paquete se envió al sitio en algún momento y se marcó como Instalado, una acción redistribuir en el DP colocado en el servidor de sitio no hace nada como DistMgr cree que el contenido ya está instalado y la siguiente línea se registrará en DistMgr.log:

El punto de distribución está en el servidor de sitio y el paquete es un paquete de tipo de contenido. No hay nada que copiar.

¿Qué ocurre si falta el contenido en la biblioteca de contenido del sitio de origen del paquete?

Si falta el contenido en la biblioteca de contenido del sitio de origen del paquete, el restablecimiento SourceVersion no ayudará. La única manera de volver a rellenar el contenido que falta es actualizar el paquete. La actualización del paquete hace que el sitio de origen del paquete tome una instantánea del paquete desde la ubicación del origen del paquete y escriba el contenido en la biblioteca de contenido.

Cómo forzar que el sitio de origen del paquete vuelva a enviar la copia comprimida del paquete a un sitio específico.

Después de confirmar que el sitio de origen del paquete tiene el contenido necesario, es posible forzar que el sitio de origen del paquete vuelva a enviar el archivo PCK del paquete a un sitio específico estableciendo SourceVersion en 0 para la fila de tipo 1 en PkgStatus para el sitio afectado. Esta fila se puede identificar ejecutando la siguiente consulta SQL en la base de datos del sitio de origen del paquete después de reemplazar packageID y SITECODE del paquete y el sitio deseados:

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

Después de confirmar que esta consulta devuelve una fila única y correcta, la ejecución de la consulta siguiente se restablecerá SourceVersion para esta fila a 0:

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

Después de restablecer a SourceVersion 0 para la fila tipo 1, redistribuir el paquete a cualquier DP del sitio afectado obligará al sitio de origen del paquete a reenviar la copia comprimida del paquete al sitio afectado.

Nota:

Es muy importante ejecutar la consulta anterior en el sitio que posee el paquete, es decir, el sitio de origen del paquete.

Tablas relevantes para la distribución de contenido

  • SMSPackages : contiene una lista de todos los paquetes.

    Columnas interesantes:

    Columna Valores
    Acción 0: ninguno
    1 - ACTUALIZACIÓN
    2 - AGREGAR
    3 - DELETE
    4 - VALIDAR
    5 - CANCELAR
    PackageType 0 - Paquete normal
    3 - Paquete de controladores
    4 - Secuencia de tareas
    5 - Paquete de actualizaciones de software
    6 - Paquete de configuración del dispositivo
    7 - Paquete de aplicación virtual
    8 - Paquete de contenido (aplicación)
    257 - Imagen del sistema operativo
    258 - Imagen de arranque
    259- Paquete de instalación del sistema operativo
    260- Paquete VHD
  • PkgServers - Contiene una lista de todos los paquetes junto con los DP a los que están destinados actualmente.

    Columnas interesantes:

    Columna Valores
    Acción 0: ninguno
    1 - ACTUALIZACIÓN
    2 - AGREGAR
    3 - DELETE
    4 - VALIDAR
    5 - CANCELAR
  • PkgStatus - Contiene una lista del estado actual del paquete para cada paquete para cada DP.

    Columnas interesantes:

    Columna Valores
    Tipo 1 - SITIO (MAESTRO)
    2 - DP (COPY)

    Se crean filas de tipo 1 para cada sitio al que se dirige el paquete. PkgServer para esta fila es el FQDN del servidor de sitio.

    Se crean filas de tipo 2 para cada DP a la que se dirige el paquete. PkgServer es el NALPATH de DP.
    Estado 0: ninguno
    1 - ENVIADO
    2 - RECIBIDO
    3 - INSTALADO
    4 - REINTENTO
    5 - ERROR
    6 - QUITADO
    7 - PENDING REMOVE (no se usa)
    8 - ERROR DE ELIMINACIÓN
    9- REINTENTAR REMOVE
  • DistributionJobs - Contiene una lista de trabajos del Administrador de transferencia de paquetes junto con su estado actual.

    Columnas interesantes:

    Columna Valores
    Acción 0: ninguno
    1 - ACTUALIZACIÓN
    2 - AGREGAR
    3 - DELETE
    4 - VALIDAR
    5 - CANCELAR
    State 0 - PENDIENTE
    1 - LISTO
    2 - INICIADO
    3 - INPROGRESS
    4 - REINICIO PENDIENTE
    5 - COMPLETADO
    6 - ERROR
    7 - CANCELADO
    8 - SUSPENDIDO
  • DistributionPoints - Contiene una lista de todos los puntos de distribución.

    Columnas interesantes:

    Columna Valores
    Acción 0: ninguno
    1 - ACTUALIZACIÓN
    2 - AGREGAR
    3 - DELETE
    4 - VALIDAR
    5 - CANCELAR
  • PullDPResponse - Contiene temporalmente la respuesta de estado del paquete enviada desde los DP de extracción. DistMgr procesa la respuesta y actualiza PkgStatus.

    Columnas interesantes:

    Columna Valores
    ActionState 1 - CORRECTO
    2 - ADVERTENCIA
    4 - ERROR
    8 - DESCARGA INICIADA
    16 - DESCARGA EN CURSO
    32 - DESCARGADO
    64 - CANCELADO
    128 - CANCELACIÓN SOLICITADA
  • PkgNotification - Tabla de notificaciones supervisada por SMSDBMON para desencadenar DistMgr para procesar un paquete. La columna De tipo define el tipo de notificación de paquete. Las filas de esta tabla se quitan después de que SMSDBMON desencadene DistMgr.

    Columnas interesantes:

    Columna Valores
    Tipo 0 - DESCONOCIDO
    1 - PAQUETE
    2 - PROGRAMA
    4 - SERVIDOR DE PAQUETES (DP)
    8 - CUENTA DE ACCESO DE PAQUETE
    15 - TODOS
  • Mensajes de estado de DP de extracción: lista de identificadores de mensajes de estado generados por dp de extracción

    Columnas interesantes:

    Columna Valores
    Id. de estado 1 - CORRECTO
    2 - ADVERTENCIA
    4 - ERROR
    8 - DESCARGA INICIADA
    16 - DESCARGA EN CURSO
    32 - DESCARGADO
    64 - CANCELADO

    Informe de mensajes de estado de ejemplo:

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

Consultas SQL útiles

Estas son algunas consultas SQL que pueden resultar útiles al solucionar varios problemas relacionados con la distribución de contenido.

Consultas de estado de Paquete/DP

  • Todos los paquetes o direcciones IP con errores

    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
    
  • Todos los paquetes en curso /DP

    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
    
  • Todos los paquetes o DIRECCIONES IP correctos

    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
    
  • Todos los paquetes/DP en estado En curso durante más de tres días

    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
    
  • Todos los paquetes/DP en estado de error durante más de tres días

    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
    
  • Recuento de todos los estados

    SELECT MessageState,
    COUNT(MessageState) AS [Count]
    FROM vSMS_DPStatusDetails
    WHERE PackageID <> ''
    GROUP BY MessageState
    
  • Recuentos de estados de paquete por 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
    
  • Estado de todos los DP para un paquete determinado

    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
    
  • Recuento de estados de DP por paquete

    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
    
  • Estado actual de 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>'
    

Búsqueda de referencias de DP huérfanas

La consulta siguiente se puede usar para identificar si quedan filas huérfanas en la base de datos para un DP que ya no está en el entorno. Podría haber filas huérfanas si el DP no se quitó correctamente.

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

Consulta similar para un DP específico en un sitio específico:

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

Propiedades del archivo de control de sitio (SCF)

  • Propiedades de SCF para DistMgr para el sitio actual

    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'
    
  • Propiedades de SCF para un 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'
    

Paquetes que contienen la actualización de software especificada

Enumere todos los paquetes que contengan el identificador único de actualización especificado.

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