内容分发中的包操作

本文可帮助你了解内容分发中的包操作。

原始产品版本:Configuration Manager Current Branch、Microsoft System Center 2012 Configuration Manager、Microsoft System Center 2012 R2 Configuration Manager

简介

内容分发中的包操作分为以下几类:

  • 分发

    与内容分发相关的第一个主要操作是“分发”操作。 这是指将包初始分发到分发点。 此操作由Configuration Manager控制台中的“分发内容”向导触发。 这将将包中的所有文件传输到目标分发点,不包括已作为另一个包的一部分存在于 DP 的内容库中的文件。 如果包包含分发点上的内容库中已有的任何文件,则这些文件在多个包之间共享。

  • 更新

    第二个主要操作是更新操作。 当包已更改,并且它分发到的所有分发点都需要更新的内容时,通常会使用此方法。 这会在控制台中通过 “更新分发点” 操作触发。 这会将更改的文件传输到所有分发点。 不会传输未更改的文件。 如果在更新版本的包中删除了文件,则只要 DP) 上没有其他共享该文件的包,就会从分发点上的包中删除该文件 (。

  • 分配

    第三个主要操作是“重新分发”操作,在 Configuration Manager 控制台中使用 Redistribute 触发。 这会将整个内容传输到特定的分发点。 即使文件已存在于分发点上的内容库中,文件也会被传输和覆盖。 重新分发操作的主要用途是更正内容库中可能存在的任何不一致。

创建包

以下步骤介绍了从管理员控制台创建尚未分发到任何 DPS 的新包时的事件流:

步骤 1:管理员控制台创建 类的SMS_PackageWMI实例

管理员在控制台中创建包后,管理控制台将在新创建的包的 SMS_Package SMS 提供程序命名空间中创建 WMI 类的实例。 SMSProv.log 显示以下内容:

SMS 提供程序 4680 (0x1248) CExtProviderClassObject::D oPutInstanceInstance~
SMS 提供程序 4680 (0x1248) 审核:用户 CONTOSO\管理员创建了类SMS_Package实例。~
SMS 提供程序 816 (0x330) 处理了以下项的插入实例通知:SMS_Package.PackageID=“PackageID”~

创建此 WMI 实例时,SMS 提供程序在数据库中的 SMSPackages 视图中插入一行:

insert SMSPackages (PkgID, Name, Version, Language, Manufacturer, Description, ISVString, Hash, NewHash, Source, SourceSite, StoredPkgPath, RefreshSchedule, LastRefresh, StoredPkgVersion, ShareName, PreferredAddress, StorePkgFlag, ShareType, HashVersion,Architecture, ImagePath,Permission, UseForcedDisconnect, ForcedRetryDelay, DisconnectDelay, IgnoreSchedule, Priority, PkgFlags, MIFFilename, MIFPublisher, MIFName, MIFVersion, SourceVersion, SourceDate, SourceSize, SourceCompSize, ImageFlags, PackageType, AlternateContentProviders, SourceLocaleID,  TransformReadiness, TransformAnalysisDate, UpdateMask, UpdateMaskEx, Action, DefaultImage) values (N'PackageID', N'Dummy1', N'', N'',N'',N'',N'',N'',N'',N'\\CS1SITE\SOURCE\Packages\Dummy1',N'CS1',N'',N'',N'04/10/1970 06:35:00', 0, N'',N'', 2, 1, 1, N'', N'', 15, 0, 2, 5, 0, 2, 16777216, N'',N'',N'',N'', 1, N'05/16/2016 15:22:12', 0, 0, 0, 0, N'', 1033, 0, N'1980/01/01 00:00:00', 0, 0, 2, 0)

插入行后,视图上的触发器在 和 SMS_Packages_L 表中插入行SMSPackages_G。 这反过来又会导致表上的 SMSPackages_G 触发器在 PkgNotification 表中插入行。 表中的 PkgNotification 行用于通知 DistMgr 处理包,此通知由 SMSDBMON 组件提供给 DistMgr。

insert PkgNotification (PkgID, Priority, Type, TimeKey) values (N'PackageID', 2, 2, GetDate())

步骤 2:SMSDBMON 检测到更改,并通过删除 <PackageID> 通知 DistMgr 处理包。PKN 文件

SMSDBMON 检测到表中的PkgNotification更改,这会导致它删除 <PackageID>。中的 PKN 文件,指示 DistMgr 处理包:DistMgr.box

SMS_DATABASE_NOTIFICATION_MONITOR 3240 (0xca8) RCV: INSERT on PkgNotification for PkgNotify_Add [<PackageID>][850902]
SMS_DATABASE_NOTIFICATION_MONITOR 3240 (0xca8) SND:已删除 E:\ConfigMgr\inboxes\distmgr.box\<PackageID>。PKN [850902]

步骤 3:DistMgr 处理包源站点上的包

在 中 DistMgr.box检测到 PKN 文件后,DistMgr 处理包。 DistMgr 处理由多个线程执行。

  1. main DistMgr 线程创建包处理线程。

    主 DistMgr 线程唤醒,将包添加到包处理队列,并创建包处理线程来处理包:

    SMS_DISTRIBUTION_MANAGER 2624 (0xa40) 找到包“PackageID”的包属性更新通知
    SMS_DISTRIBUTION_MANAGER 2624 (0xa40) 将包“PackageID”添加到包处理队列。
    SMS_DISTRIBUTION_MANAGER 2624 (0xa40) ~当前使用 0(共 3 个允许的包处理线程)。
    SMS_DISTRIBUTION_MANAGER 2624 (0xa40) ~包“PackageID”的已启动包处理线程,线程 ID = 0x16A8 (5800)

  2. 包处理线程创建包快照并在内容库中写入内容。

    在这种情况下,包处理线程 (线程 ID 5800,) 开始处理包并创建包快照。 创建包快照后,此线程还会将包内容写入站点服务器上的内容库。

    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) STATMSG: ID=2300 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_DISTRIBUTION_MANAGER” SYS=CS1SITE。CONTOSO.COM SITE=CS1 PID=1904 TID=5800 GMTDATE=Mon May 16 14:33:55.691 2016 ISTR0=“Dummy1” ISTR1=“<PackageID>” ISTR2=“” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“” ISTR7=“” ISTR8=“” ISTR9=“” NUMATTRS=1 AID0=400 AVAL0=“<PackageID>”
    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) ~处理包 <PackageID> (SourceVersion:1;StoredVersion:0)
    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) 开始添加包 <PackageID>...
    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) ~包操作为 2,更新掩码为 0,UpdateMaskEx 为 0。
    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) ~CDistributionSrcSQL::UpdateAvailableVersion PackageID=<PackageID>, Version=1, Status=2300
    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) 从源 \\CS1SITE\SOURCE\Packages\Dummy1 获取包 PackageID> 的包<快照
    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) 包 <PackageID> 版本 1 的大小为 204800 KBytes
    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) 编写 PackageID 的 <包定义>
    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) ~已成功创建包 PackageID 版本 1 的 RDC 签名
    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) 为算法 32780 创建哈希
    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) 算法 32780 的哈希为 <HashString>
    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) 算法 32780 的 RDC 签名哈希为 <HashString>
    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) ~将这些内容添加到包 PackageID 版本 1。
    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) STATMSG: ID=2376 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_DISTRIBUTION_MANAGER” SYS=CS1SITE。CONTOSO.COM SITE=CS1 PID=1904 TID=5800 GMTDATE=Mon May 16 14:34:04.611 2016 ISTR0=“<PackageID>” ISTR1=“” ISTR 2=“”“ ISTR3=”“ ISTR4=”“ ISTR5=”“ ISTR6=”“ ISTR7=”“ ISTR8=”“ ISTR9=”“ NUMATTRS=1 AID0=400 AVAL0=”<PackageID>”

  3. 包处理线程将包复制到其他站点。

    然后,包处理线程将包复制到层次结构中的其他站点。 包元数据信息通过数据库复制复制到其他站点,而包文件则使用文件复制进行复制。 但是,仅当该站点中至少有一个 DP 添加到包时,才会将包文件发送到站点。 在将包文件发送到另一个站点之前,包文件会被压缩。 在这种情况下,由于没有面向 DP,因此只会将包元数据复制到其他站点,但不会复制包文件。

    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) ~PackageID <> 没有首选发件人。
    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) 包 PackageID> 的程序<已添加或删除,因此需要将其复制到所有子站点。
    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) Package <PackageID> 是新的或已更改的,可复制到所有适用的站点。
    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) ~CDistributionSrcSQL::UpdateAvailableVersion PackageID=<PackageID>, Version=1, Status=2301
    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) ~StoredPkgVersion (包 PackageID> 1) <。 数据库中的 StoredPkgVersion 为 1。
    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) ~SourceVersion (包 PackageID> 的 <1) 。 数据库中的 SourceVersion 为 1。
    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) ~将这些内容添加到包 <PackageID> 版本 1。

  4. 包处理线程退出。

    包处理线程在包处理完成后退出,并引发 ID 为 2301 的状态消息,这意味着“分发管理器已成功处理包 <PACKAGENAME> (包 ID = <PKGID>) ”。

    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) STATMSG: ID=2301 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_DISTRIBUTION_MANAGER” SYS=CS1SITE。CONTOSO.COM SITE=CS1 PID=1904 TID=5800 GMTDATE=Mon May 16 14:34:06.736 2016 ISTR0=“Dummy1” ISTR1=“<PackageID>” ISTR2=“” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“” ISTR7=“” ISTR8=“” ISTR9=“” NUMATTRS=1 AID0=400 AVAL0=“<PackageID>”
    SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) 包包 ID> 的退出包<处理线程。

步骤 4: ((如果适用)) DRS 将包复制到其他站点

如果层次结构中还有其他站点,则通过数据库复制将包元数据信息复制到其他站点。 复制包信息后,将插入表中的 SMSPackages_G 一行,这会触发表中的 PkgNotification 插入。

步骤 5: (如果适用,) 接收站点上的 SMSDBMON 通过删除 <PackageID> 通知 DistMgr。PKN 文件

在接收站点上,SMSDBMON 检测到表中的更改PkgNotification,导致它删除 <PackageID>。中的 PKN 文件,指示 DistMgr 处理包:DistMgr.box

SMS_DATABASE_NOTIFICATION_MONITOR 3120 (0xc30) RCV: INSERT on PkgNotification for PkgNotify_Add [<PackageID> ][1035019]
SMS_DATABASE_NOTIFICATION_MONITOR 3120 (0xc30) SND:已删除 E:\ConfigMgr\inboxes\distmgr.box\<PackageID>。PKN [1035019]

步骤 6: (如果适用,) 接收站点上的 DistMgr 处理包

在接收站点上,在收到 后 。PKN 文件 DistMgr 唤醒以处理包。

  1. main DistMgr 线程创建包处理线程。

    main DistMgr 线程将包添加到包处理队列,并创建包处理线程:

    SMS_DISTRIBUTION_MANAGER 3648 (0xe40) 找到包“PackageID>”<的包属性更新通知
    SMS_DISTRIBUTION_MANAGER 3648 (0xe40) 将包“PackageID>”<添加到包处理队列。
    SMS_DISTRIBUTION_MANAGER 3648 (0xe40) ~当前使用 0(共 3 个)允许的包处理线程。
    SMS_DISTRIBUTION_MANAGER 3648 (0xe40) ~包“PackageID>”<的已启动包处理线程,线程 ID = 0x1378 (4984)

  2. 包处理线程处理包。

    在这种情况下,此线程无需执行任何操作,因为没有 DPS 成为目标。

    SMS_DISTRIBUTION_MANAGER 4984 (0x1378) STATMSG: ID=2300 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_DISTRIBUTION_MANAGER” SYS=PS1SITE。CONTOSO.COM SITE=PS1 PID=4224 TID=4984 GMTDATE=Mon May 16 14:36:08.809 2016 ISTR0=“Dummy1” ISTR1=“<PackageID>” ISTR2=“” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“” ISTR7=“” ISTR8=“” ISTR9=“” NUMATTRS=1 AID0=400 AVAL0=“<PackageID>”
    SMS_DISTRIBUTION_MANAGER 4984 (0x1378) ~处理包 <PackageID> (SourceVersion:1;StoredVersion:0)
    SMS_DISTRIBUTION_MANAGER 4984 (0x1378) 开始添加包 <PackageID>...
    SMS_DISTRIBUTION_MANAGER 4984 (0x1378) ~包操作为 2,更新掩码为 0,UpdateMaskEx 为 0。
    SMS_DISTRIBUTION_MANAGER 4984 (0x1378) ~已成功创建/更新包 <PackageID>
    SMS_DISTRIBUTION_MANAGER 4984 (0x1378) STATMSG: ID=2311 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_DISTRIBUTION_MANAGER” SYS=PS1SITE。CONTOSO.COM SITE=PS1 PID=4224 TID=4984 GMTDATE=Mon May 16 14:36:09.486 2016 ISTR0=“PackageID” ISTR1=“” ISTR 2=“”“ ISTR3=”“ ISTR4=”“ ISTR5=”“ ISTR6=”“ ISTR7=”“ ISTR8=”“ ISTR9=”“ NUMATTRS=1 AID0=400 AVAL0=”<PackageID>”
    SMS_DISTRIBUTION_MANAGER 4984 (0x1378) ~为 ID <PackageID 创建了策略提供程序触发器>
    SMS_DISTRIBUTION_MANAGER 4984 (0x1378) ~PackageID <> 没有首选发件人。
    SMS_DISTRIBUTION_MANAGER 4984 (0x1378) ~CDistributionSrcSQL::UpdateAvailableVersion PackageID=<PackageID>, Version=1, Status=2301
    SMS_DISTRIBUTION_MANAGER 4984 (0x1378) ~StoredPkgVersion (包 PackageID> 0) <。 数据库中的 StoredPkgVersion 为 0。
    SMS_DISTRIBUTION_MANAGER 4984 (0x1378) ~SourceVersion (包 PackageID> 的 <1) 。 数据库中的 SourceVersion 为 1。
    SMS_DISTRIBUTION_MANAGER 4984 (0x1378) STATMSG: ID=2301 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_DISTRIBUTION_MANAGER” SYS=PS1SITE。CONTOSO.COM SITE=PS1 PID=4224 TID=4984 GMTDATE=Mon May 16 14:36:10.061 2016 ISTR0=“Dummy1” ISTR1=“<PackageID>” ISTR2=“” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“” ISTR7=“” ISTR8=“” ISTR9=“” NUMATTRS=1 AID0=400 AVAL0=“<PackageID>”
    SMS_DISTRIBUTION_MANAGER 4984 (0x1378) ~正在退出 package PackageID> 的包<处理线程。

跨站点将包分发到 DP

以下步骤概述了将包分发到主站点中的 DP,但相关主站点服务器在内容库中 不包含 此包的副本时的事件流。 此包是在管理中心站点上创建的,因此管理中心站点是包源站点:

在包源站点上

步骤 1:管理控制台通过在 类上SMS_PackageWMI调用 AddDistributionPoints 方法将 DP 添加到包

管理员从控制台将包分发到 DP 后,管理控制台会调用 AddDistributionPoints 类的 SMS_Package 方法,将指定的 DP 添加到包中。 SMSProv.log 显示以下内容:

SMS 提供程序 4616 (0x1208) 上下文:SMSAppName=Configuration Manager管理员控制台~
SMS 提供程序 4616 (0x1208) ExecMethodAsync: SMS_Package.PackageID=“<PackageID>”::AddDistributionPoints~
SMS 提供程序 4616 (0x1208) CExtProviderClassObject::D oExecuteMethod AddDistributionPoints~
SMS 提供程序 4616 (0x1208) 审核:用户 CONTOSO\管理员调用类SMS_Package实例的已审核方法。~

调用此方法时,SMS 提供程序在中 PkgServers 插入一行,并将 Action 设置为 2 (ADD) 。

insert PkgServers (PkgID, NALPath, SiteCode, SiteName, SourceSite, LastRefresh, RefreshTrigger, UpdateMask, Action) select N'PackageID', N'['Display=\\PS1SITE.CONTOSO.COM\']MSWNET:['SMS_SITE=PS1']\\PS1SITE.CONTOSO.COM\', N'PS1', Sites.SiteName, N'CS1', N'04/10/1970 06:35:00', 0, 0, 2  from Sites where SiteCode = N'PS1'

在 中 PkgServers插入行后,SMS 提供程序还会在 PkgNotification 表中插入行。 表中的 PkgNotification 行用于通知 DistMgr 处理包,此通知由 SMSDBMON 组件提供给 DistMgr。

insert PkgNotification (PkgID, Priority, Type, TimeKey) values (N'PackageID', 2, 4, GetDate())

步骤 2:SMSDBMON 检测包更改,并通过删除 <PackageID> 通知 DistMgr。DistMgr.box 中的 PKN 文件

SMSDBMON 检测到表中导致它删除 PackageID 的更改PkgNotification<。>中的 DistMgr.box PKN 文件,指示 DistMgr 处理包。

SMS_DATABASE_NOTIFICATION_MONITOR 4944 (0x1350) RCV: INSERT on PkgNotification for PkgNotify_Add [<PackageID> ][850967]
SMS_DATABASE_NOTIFICATION_MONITOR 4944 (0x1350) SND:已删除 E:\ConfigMgr\inboxes\distmgr.box\<PackageID>。PKN [850967]

步骤 3:DistMgr 在收到 PKN 文件后唤醒以处理包

  1. main DistMgr 线程创建包处理线程。

    main DistMgr 线程将包添加到包处理队列,并创建包处理线程。

    SMS_DISTRIBUTION_MANAGER 2496 (0x9c0) 将包“PackageID>”<添加到包处理队列。
    SMS_DISTRIBUTION_MANAGER 2496 (0x9c0) ~当前使用 0(共 3 个)允许的包处理线程。
    SMS_DISTRIBUTION_MANAGER 2496 (0x9c0) ~包“PackageID>”<的已启动包处理线程,线程 ID = 0x1164 (4452)

  2. 包处理线程处理包操作。

    包处理线程处理包操作,以从 DP 中添加/更新/删除包。 在这种情况下,包源站点是管理中心站点,并且没有要处理的包操作,因为管理中心站点不包含任何 DPS。 在有要处理的包操作的站点上,包处理线程创建 DP 线程来执行这些操作,并等待 DP 线程退出,然后再转到步骤 3-3。

    SMS_DISTRIBUTION_MANAGER 4452 (0x1164) ~处理包 <PackageID> (SourceVersion:1;StoredVersion:1)
    SMS_DISTRIBUTION_MANAGER 4452 (0x1164) 未为包 <PackageID> 指定任何操作,但此包可能会有包服务器更改。

  3. 包处理线程创建一个微型作业,用于将包的压缩副本发送到目标站点。

    此微型作业由计划程序处理,以创建发送方的发送请求,以将包的压缩副本传输到目标站点:

    SMS_DISTRIBUTION_MANAGER 4452 (0x1164) ~PackageID <> 没有首选发件人。
    SMS_DISTRIBUTION_MANAGER 4452 (0x1164) ~需要将 package PackageID> 的压缩包<发送到站点 PS1
    SMS_DISTRIBUTION_MANAGER 4452 (0x1164) ~将包 <PackageID> 的副本发送到站点 PS1
    SMS_DISTRIBUTION_MANAGER 4452 (0x1164) ~网站 PS1 的报告站点是此网站。
    SMS_DISTRIBUTION_MANAGER 4452 (0x1164) ~使用驱动器 E 存储压缩包。
    SMS_DISTRIBUTION_MANAGER 4452 (0x1164) ~设置 CMiniJob 将根转移到 E:\SMSPKG\<PackageID>。PCK.1
    SMS_DISTRIBUTION_MANAGER 4452 (0x1164) 文件 E:\SMSPKG\<PackageID> 上的递增引用计数。PCK.1,计数 = 2
    SMS_DISTRIBUTION_MANAGER 4452 (0x1164) 文件 E:\SMSPKG\<PackageID> 上的递减引用计数。PCK.1,计数 = 1
    SMS_DISTRIBUTION_MANAGER 4452 (0x1164) ~创建了用于将包 <PackageID> 的压缩副本发送到站点 PS1 的微型作业。 传输根 = E:\SMSPKG\<PackageID>。PCK.1。
    SMS_DISTRIBUTION_MANAGER 4452 (0x1164) 包 PackageID> 的包<和/或程序属性未更改,需要确定哪个站点 () 需要更新的包信息。
    SMS_DISTRIBUTION_MANAGER 4452 (0x1164) 此站点上更改了分发点,将站点 PS1 添加到了要向其发送包 <PackageID> 的站点列表。
    SMS_DISTRIBUTION_MANAGER 4452 (0x1164) PS1 的父站点为 CS1

  4. 包处理线程在处理包后退出:

    SMS_DISTRIBUTION_MANAGER 4452 (0x1164) ~StoredPkgVersion (包 PackageID> 的 <1) 。 数据库中的 StoredPkgVersion 为 1。
    SMS_DISTRIBUTION_MANAGER 4452 (0x1164) ~SourceVersion (包 PackageID> 的 <1) 。 数据库中的 SourceVersion 为 1。
    SMS_DISTRIBUTION_MANAGER 4452 (0x1164) ~正在退出包 PackageID> 的包<处理线程

步骤 4:计划程序组件处理包处理线程创建的微型作业并创建发送请求

计划程序组件在收到用于传输包的压缩副本的作业后唤醒,并为 Sender 创建发送请求,以便发件人可以将压缩副本发送到目标站点。

SMS_SCHEDULER 5492 (0x1574) ======== 处理作业========
SMS_SCHEDULER 5492 (0x1574) <激活 JOB JOBID>[Dummy1 的软件分发,包 ID = <PackageID>]~
SMS_SCHEDULER 5492 (0x1574) 目标站点:PS1,首选地址:*,优先级:2
SMS_SCHEDULER 5492 (0x1574) 说明类型:MICROSOFT|SMS|MINIJOBINSTRUCTION |包~
SMS_SCHEDULER 5492 (0x1574) 创建指令文件:\\CS1SITE.CONTOSO.COM\SMS_CS1\inboxes\schedule.box\tosend\JOBID。Icl~
SMS_SCHEDULER 5492 (0x1574) 传输根目录:E:\SMSPKG\<PackageID>。PCK.1~
SMS_SCHEDULER 5492 (0x1574) <更新 JOB JOBID>[Dummy1 的软件分发,包 ID = <PackageID>]~
SMS_SCHEDULER 5492 (0x1574) 创建新的发送请求 ID: 202SQCS1~

计划程序将定期更新发送请求,并记录有关发送请求的有用信息,其中包括总大小和剩余大小:

SMS_SCHEDULER 5492 (0x1574) ====== 正在更新发送请求列表=======
SMS_SCHEDULER 5492 (0x1574) 发送请求 202SQCS1 JobID: JOBID DestSite: PS1 FinalSite: 状态: 挂起状态: 操作: 无 总大小: 204864k 剩余: 204864k 检测信号: 12:23 开始: 12:00 完成: 12:00 重试: SWD PkgID: <PackageID> SWD Pkg 版本: 1

步骤 5:发送方组件开始处理发送请求

发送方组件处理发送请求,并将包的压缩副本发送到目标站点。

  1. main发送方线程启动发送线程,该线程将执行此发送请求的所有工作。

    SMS_LAN_SENDER 6700 (0x1a2c) 找到发送请求。 ID: 202SQCS1, Dest Site: PS1~
    SMS_LAN_SENDER 6700 (0x1a2c) 检查站点特定发送容量。 已使用 0(共 3 个)。~
    SMS_LAN_SENDER 6700 (0x1a2c) ~已创建发送线程 (线程 ID = 1150)

  2. 发送线程处理发送请求,并将压缩的包文件 (PCK 文件) 复制到目标站点,以及包指令文件 (SNI 文件) 。

    SMS_LAN_SENDER 4432 (0x1150) ~尝试 1 号地址 (1)
    SMS_LAN_SENDER 4432 (0x1150) ~已通过 xmit 文件测试,使用现有连接
    SMS_LAN_SENDER 4432 (0x1150) ~Package file = E:\SMSPKG\<PackageID>。PCK.1
    SMS_LAN_SENDER 4432 (0x1150) ~指令文件 = E:\ConfigMgr\inboxes\schedule.box\tosend\00000E2A。Icl
    SMS_LAN_SENDER 4432 (0x1150) ~正在检查远程文件 \\PS1SITE.CONTOSO.COM\SMS_SITE\202SQCS1。PCK
    SMS_LAN_SENDER 4432 (0x1150) ~正在检查远程文件 \\PS1SITE.CONTOSO.COM\SMS_SITE\202SQCS1。SNI
    SMS_LAN_SENDER 4432 (0x1150) ~正在检查远程文件 \\PS1SITE.CONTOSO.COM\SMS_SITE\202SQCS1。Tmp。。。
    SMS_LAN_SENDER 4432 (0x1150) ~尝试创建/打开远程文件 \\PS1SITE.CONTOSO.COM\SMS_SITE\202SQCS1。PCK
    SMS_LAN_SENDER 4432 (0x1150) ~已创建/打开远程文件 \\PS1SITE.CONTOSO.COM\SMS_SITE\202SQCS1。PCK
    SMS_LAN_SENDER 4432 (0x1150) ~发送已启动 [E:\SMSPKG\<PackageID>.PCK.1]
    SMS_LAN_SENDER 4432 (0x1150) ~尝试将 1024 字节写入 \\PS1SITE.CONTOSO.COM\SMS_SITE\202SQCS1。位置 0 处的 PCK
    SMS_LAN_SENDER 4432 (0x1150) ~向 \\PS1SITE.CONTOSO.COM\SMS_SITE\202SQCS1 写入了 1024 个字节。位置 0 处的 PCK...
    SMS_LAN_SENDER 4432 (0x1150) ~尝试将380731字节写入 \\PS1SITE.CONTOSO.COM\SMS_SITE\202SQCS1。PCK 位置209398784
    SMS_LAN_SENDER 4432 (0x1150) ~将380731个字节写入 \\PS1SITE.CONTOSO.COM\SMS_SITE\202SQCS1。PCK 位于 位置209398784
    SMS_LAN_SENDER 4432 (0x1150) ~发送已完成 [E:\SMSPKG\<PackageID>.PCK.1]
    SMS_LAN_SENDER 4432 (0x1150) ~已完成将 SWD 包 <PackageID> 版本 1 发送到站点 PS1 ...
    SMS_LAN_SENDER 4432 (0x1150) ~正在发送 [E:\ConfigMgr\inboxes\schedule.box\tosend\00000E2A.Icl]
    SMS_LAN_SENDER 4432 (0x1150) ~发送已完成 [E:\ConfigMgr\inboxes\schedule.box\tosend\00000E2A.Icl]
    SMS_LAN_SENDER 4432 (0x1150) ~已完成将 SWD 包 <PackageID> 版本 1 发送到站点 PS1 ...
    SMS_LAN_SENDER 4432 (0x1150) ~重命名远程文件 \\PS1SITE.CONTOSO.COM\SMS_SITE\202SQCS1。TMP 到 \\PS1SITE.CONTOSO.COM\SMS_SITE\202SQCS1。SNI
    MS_LAN_SENDER 4432 (0x1150) ~重命名已完成 [\\PS1SITE.CONTOSO.COM\SMS_SITE\202SQCS1。TMP]
    SMS_LAN_SENDER 4432 (0x1150) ~发送已完成

    发送线程将这些文件复制到 SMS_SITE 接收站点上的共享。

    提示

    sender.log文件持续记录其写入的位置。 例如,位置在上面的日志中 209398784 。 此位置是写入到的字节偏移量,可以通过转换此值来查找复制的数据量。 例如,209398784字节 = 199.69 MB。

步骤 6:计划程序组件将作业标记为已完成,并删除发送请求

计划程序组件监视发送请求,在发送方处理完发送请求后,计划程序会将作业标记为完成并删除发送请求:

SMS_SCHEDULER 5492 (0x1574) ====== 检查所有发送请求的状态======
SMS_SCHEDULER 5492 (0x1574) ~=\ 检查发件箱 \\CS1SITE.CONTOSO.COM\SMS_CS1\inboxes\schedule.box\outboxes\LAN 的发送请求。~~
SMS_SCHEDULER 5492 (0x1574) 检查发送请求 202SQCS1~
SMS_SCHEDULER 5492 (0x1574) 发送已完成 (13985442 字节/秒) 。~
SMS_SCHEDULER 5492 (0x1574) <更新 JOB JOBID>[Dummy1 的软件分发,包 ID = <PackageID>]~
SMS_SCHEDULER 5492 (0x1574) 发送请求已成功完成。~
SMS_SCHEDULER 5492 (0x1574) <作业状态 - 完成>~
SMS_SCHEDULER 5492 (0x1574) 删除指令文件 \\CS1SITE.CONTOSO.COM\SMS_CS1\inboxes\schedule.box\tosend\00000E2A。Icl.~
SMS_SCHEDULER 5492 (0x1574) 删除作业包源 [E:\SMSPKG\<PackageID>.PCK.1].~
SMS_SCHEDULER 5492 (0x1574) 已删除引用计数的文件 E:\SMSPKG\<PackageID>。PCK.1
SMS_SCHEDULER 5492 (0x1574) 文件 E:\SMSPKG\<PackageID> 上的递减引用计数。PCK.1,计数 = 0
SMS_SCHEDULER 5492 (0x1574) 删除 ID 为 202SQCS1 的发送请求。~
SMS_SCHEDULER 5492 (0x1574) 已删除作业 JOBID。~

完成此步骤后,发送站点不再需要执行任何工作,接收站点将开始处理包。

在目标站点上

步骤 7:反脱机程序处理 PCK 和 SNI 文件

在步骤 5 中, PCKSNI 文件已复制到 SMS_SITE 接收站点上的共享。 在每个Configuration Manager网站上,\inboxes\despoolr.box\receive 文件夹共享为 SMS_SITE。 当这些文件到达 despoolr.box\receive 文件夹中时, despooler 组件将唤醒以处理 SNI 文件(即指令文件)。

  1. main反脱机程序线程创建反池线程。

    主析池程序查找指令文件,并创建一个反脱机线程来处理指令文件:

    SMS_DESPOOLER 6128 (0x17f0) ~找到就绪指令 202sqcs1.sni
    SMS_DESPOOLER 6128 (0x17f0) ~已使用 0(共 3 个反池线程)
    SMS_DESPOOLER 6128 (0x17f0) ~创建了新的反池线程 EE8

  2. (偶尔) 非脱机线程在首次尝试时无法处理指令,并在 5 分钟后重试。

    反脱机线程处理指令文件,但在许多情况下,首次反脱机程序尝试处理包的指令文件会失败,并显示“此版本的包信息尚未到达”消息,因为包元数据信息尚未复制到接收站点。 发生这种情况时, despooler.log 显示“错误代码 = 12”,但在 5 分钟后重试此指令,这在包信息在此期间复制时成功。 步骤 7-3 显示重试时指令的成功处理。

    SMS_DESPOOLER 3816 (0xee8) ~正在验证 MICROSOFT|SMS| 类型的指令 E:\ConfigMgr\inboxes\despoolr.box\receive\ds_s76nc.ist 的签名MINIJOBINSTRUCTION |包
    SMS_DESPOOLER 3816 (0xee8) ~签名已正常签出,以获取来自站点 CS1 的说明,继续执行指令。
    SMS_DESPOOLER 3816 (0xee8) ~执行 MICROSOFT|SMS 类型的指令MINIJOBINSTRUCTION |包
    SMS_DESPOOLER 3816 (0xee8) ~Received 包 PackageID 版本 1。 压缩文件 - E:\SMSPKG\<PackageID>。PCK.1 作为 E:\ConfigMgr\inboxes\despoolr.box\receive\ds_s76nc.pkg
    SMS_DESPOOLER 3816 (0xee8) ~旧包存储UNC 路径为 。
    SMS_DESPOOLER 3816 (0xee8) ~此包[<PackageID>]的信息尚未到达此版本 [1]。请稍后重试 ...
    SMS_DESPOOLER 3816 (0xee8) ~为作业 JOBID 创建了重试指令
    SMS_DESPOOLER 3816 (0xee8) ~Despooler 无法执行指令, 错误代码 = 12 ...
    SMS_DESPOOLER 6128 (0x17f0) ~Instruction E:\ConfigMgr\inboxes\despoolr.box\receive\ds_3kyyh.sni 直到东部夏令时 5/16 12:29:11 PM 才进行处理

    如果发生这种情况,DistMgr 将尝试处理包,但由于包的压缩副本尚未处理并提取到内容库中,包处理线程将记录以下内容并退出:

    SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) ~包“PackageID>”<的已启动包处理线程,线程 ID = 0xAAC (2732)
    SMS_DISTRIBUTION_MANAGER 2732 (0xaac) ~处理包 <PackageID> (SourceVersion:1;StoredVersion:0)
    SMS_DISTRIBUTION_MANAGER 2732 (0xaac) ~包 PackageID> 的内容<尚未从站点 CS1 到达,稍后将重试
    SMS_DISTRIBUTION_MANAGER 2732 (0xaac) ~所有 DP 线程都已完成包 <PackageID> 处理线程。
    SMS_DISTRIBUTION_MANAGER 2732 (0xaac) ~正在退出包 PackageID> 的包<处理线程。

  3. 反脱机线程处理指令并将内容写入内容库。

    反脱机线程处理指令,将 PCK 文件解压缩到临时位置,然后将内容写入内容库。

    SMS_DESPOOLER 4072 (0xfe8) ~Received 包 <PackageID> 版本 1。 压缩文件 - E:\SMSPKG\<PackageID>。PCK.1 as E:\ConfigMgr\inboxes\despoolr.box\receive\PKGj3uib.TRY
    SMS_DESPOOLER 4072 (0xfe8) ~旧包存储UNC 路径为 。
    SMS_DESPOOLER 4072 (0xfe8) ~使用驱动器 E 存储压缩包。
    SMS_DESPOOLER 4072 (0xfe8) 找不到分支缓存注册表项。
    SMS_DESPOOLER 4072 (0xfe8) 解压缩 E:\SMSPKG\<PackageID>。PCK 到 E:\SMSPKG\<PackageID>。PCK.temp
    SMS_DESPOOLER 4072 (0xfe8) 内容库:E:\SCCMContentLib
    SMS_DESPOOLER 4072 (0xfe8) 从 E:\SMSPKG\<PackageID> 提取。PCK.temp
    SMS_DESPOOLER 4072 (0xfe8) 提取包 <PackageID>
    SMS_DESPOOLER 4072 (0xfe8) 提取内容 <PackageID.1>
    SMS_DESPOOLER 4072 (0xfe8) 编写 PackageID> 的<包定义
    SMS_DESPOOLER 4072 (0xfe8) ~Package <PackageID> (版本 0) 存在于分发源中,请保存较新版本 (版本 1) 。
    SMS_DESPOOLER 4072 (0xfe8) ~Stored PackageID<>。 存储包版本 = 1

    成功将内容提取到内容库后,反脱机程序会在SMSPackages_L表中更新StoredPkgVersion,并在表中插入一行PkgNotification,以便可以通知 DistMgr 处理包。

    update SMSPackages_L set StoredPkgPath = N'\\PS1SITE.CONTOSO.COM\E$\SMSPKG\<PackageID>.PCK', StoredPkgVersion = 1, UpdateMask = 160, UpdateMaskEx = 0, Action = 1 where PkgID = N'<PackageID>'
    insert PkgNotification (PkgID, Priority, Type, TimeKey) values (N'<PackageID>', 2, 1, GetDate())
    
  4. 反池线程更新 中 PkgStatus接收站点的类型 1 行引发 ID 为 4400 的状态消息,然后退出。

    update PkgStatus set Status = 2, UpdateTime = N'Date Time', Location = N'\\PS1SITE.CONTOSO.COM\E$\SMSPKG\PackageID.PCK', ShareName = N'', HTTPUrl = N'', SourceVersion = 1, Personality = 0, State = 0, SigURL = N'', SigLocation = N'' where ID = N'PackageID' and Type = 1 and SiteCode = N'PS1' and PkgServer = N'PS1SITE.CONTOSO.COM'
    

    SMS_DESPOOLER 4072 (0xfe8) STATMSG: ID=4400 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_DESPOOLER” SYS=PS1SITE。CONTOSO.COM SITE=PS1 PID=5428 TID=4072 GMTDATE=Mon 5 月 16 日 16:31:21.400 2016 ISTR0=“<PackageID>” ISTR1=“\\PS1SITE.CONTOSO.COM\E$\SMSPKG\<PackageID>。PCK“ ISTR2=”“ ISTR3=”“ ISTR4=”“ ISTR5=”“ ISTR6=”“ ISTR7=”“ ISTR8=”“ ISTR9=”“ NUMATTRS=1 AID0=400 AVAL0=”<PackageID>”
    SMS_DESPOOLER 4072 (0xfe8) ~Despooler 已成功执行一个指令。

步骤 8:SMSDBMON 通知 DistMgr 处理包

SMSDBMON 检测表中的 PkgNotification 更改,并在 中删除 DistMgr.box PKN 文件,以指示 DistMgr 处理包。

SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) RCV: INSERT on PkgNotification for PkgNotify_Add [<PackageID> ][1035289]
SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) SND:已删除 E:\ConfigMgr\inboxes\distmgr.box\<PackageID>。PKN [1035289]

步骤 9:DistMgr 唤醒以处理包

DistMgr 在检测到 PKN 文件并处理包后唤醒。

  1. main DistMgr 线程创建包处理线程。

    main DistMgr 线程将包添加到包处理队列,并创建包处理线程。

    SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) 找到包“PackageID>”<的包属性更新通知
    SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) 将包“PackageID>”<添加到包处理队列。
    SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) ~当前使用 0(共 3 个允许的包处理线程)。
    SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) ~包“PackageID>”<的已启动包处理线程,线程 ID = 0x93C (2364)

  2. 包处理线程创建 DP 线程来处理包操作,并等待它们退出。

    包处理线程 (TID 2364) 处理包操作, (添加/更新/删除 DP 的) 。 在这种情况下,包已分发到 DP,包处理线程创建 DP 线程以将包添加到 DP。 创建 DP 线程后,包处理线程将等待所有 DP 线程退出,然后再进一步移动。

    SMS_DISTRIBUTION_MANAGER 2364 (0x93c) ~处理包 <PackageID> (SourceVersion:1;StoredVersion:1)
    SMS_DISTRIBUTION_MANAGER 2364 (0x93c) 开始更新包 <PackageID>...
    SMS_DISTRIBUTION_MANAGER 2364 (0x93c) ~包操作为 1,更新掩码为 160,UpdateMaskEx 为 0。
    SMS_DISTRIBUTION_MANAGER 2364 (0x93c) ~使用驱动器 E 存储压缩包。
    SMS_DISTRIBUTION_MANAGER 2364 (0x93c) ~已成功创建/更新包 <PackageID> ...
    SMS_DISTRIBUTION_MANAGER 2364 (0x93c) 开始将 package <PackageID> 添加到服务器 [“Display=\PS1DP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP1.CONTOSO.COM\...
    SMS_DISTRIBUTION_MANAGER 2364 (0x93c) ~已创建 DP 处理线程 5204,用于在<>服务器 [“Display=\\PS1DP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP1.CONTOSO.COM\ ...
    SMS_DISTRIBUTION_MANAGER 2364 (0x93c) ~等待包 <PackageID> 处理线程完成所有 DP 线程。

  3. DP 线程创建 PkgXferMgr 作业以将内容传输到 DP,然后退出。

    DP 线程 (TID 5204) 开始将包添加到 DP。 DP 线程不会直接将包内容复制到 DP,而是为包传输管理器创建一个作业, (PkgXferMgr) 指示它将包内容复制到 DP。 以下日志条目显示了创建 PkgXferMgr 作业的 DP 线程。 创建作业后,DP 线程的工作完成,DP 线程退出。

    SMS_DISTRIBUTION_MANAGER 5204 (0x1454) DP 线程:尝试在 DP 上添加或更新包 <PackageID> [“Display=\PS1DP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP1.CONTOSO.COM\
    SMS_DISTRIBUTION_MANAGER 5204 (0x1454) STATMSG: ID=2342 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_DISTRIBUTION_MANAGER” SYS=PS1SITE。CONTOSO.COM SITE=PS1 PID=5428 TID=5204 GMTDATE=星期一 五月 16 16:31:37.364 2016 ISTR0=“Dummy1” ISTR1=“[”Display=\\PS1DP1.CONTOSO.COM\“]MSWNET:[”SMS_SITE=PS1“]\\PS1DP1.CONTOSO.COM\” ISTR2=“” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“” ISTR7=“” ISTR8=“” ISTR9=“” NUMATTRS=2 AID0=400 AVAL0=“<PackageID>” AID1=404 AVAL1=“[”Display=\PS1DP1.CONTOSO.COM\“]MSWNET:[”SMS_SITE=PS1“]\\PS1DP1.CONTOSO.COM\”
    SMS_DISTRIBUTION_MANAGER 5204 (0x1454) 当前用户上下文将用于连接到 [“Display=\\PS1DP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP1.CONTOSO.COM\.~
    SMS_DISTRIBUTION_MANAGER 5204 (0x1454) ~已创建包传输作业,以便将包<PackageID> 发送到分发点 [“Display=\PS1DP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP1.CONTOSO.COM\。
    SMS_DISTRIBUTION_MANAGER 5204 (0x1454) STATMSG: ID=2357 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_DISTRIBUTION_MANAGER” SYS=PS1SITE。CONTOSO.COM SITE=PS1 PID=5428 TID=5204 GMTDATE=星期一 五月 16 16:31:46.670 2016 ISTR0=“PackageID” ISTR1=“[”Display=\\PS1DP1.CONTOSO.COM\“]MSWNET:[”SMS_SITE=PS1“]\\PS1DP1.CONTOSO.COM\” ISTR2=“” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“” ISTR7=“” ISTR8=“” ISTR9=“” NUMATTRS=2 AID0=400 AVAL0=“<PackageID>” AID1=404 AVAL1=“[”Display=\\PS1DP1.CONTOSO.COM\“]MSWNET:[”SMS_SITE=PS1“]\\PS1DP1.CONTOSO.COM\”
    SMS_DISTRIBUTION_MANAGER 5204 (0x1454) 返回前执行清理。
    SMS_DISTRIBUTION_MANAGER 5204 (0x1454) 取消与 \\PS1DP1.CONTOSO.COM\ADMIN$ 的网络连接。

    当 DP 线程创建 PkgXferMgr 作业时,它会通过在表中插入一行 DistributionJobs 来实现。

    insert into DistributionJobs (DPID,PkgID,PackageVersion,State,CreationTime,Action) values(32,N'PackageID',1,0,N'Date Time',1)
    

    创建作业后,DP 线程还会重置表中 DP PkgServers_L 的操作。

    update PkgServers_L set UpdateMask = 0, Action = 0, RefreshTrigger = 0, LastRefresh = N'Date Time' where PkgID = N'PackageID' and NALPath = N'["Display=\\PS1DP1.CONTOSO.COM\"]MSWNET:["SMS_SITE=PS1"]\\PS1DP1.CONTOSO.COM\' and SiteCode = N'PS1' and Action <> 3
    
  4. 包进程线程在所有 DP 线程退出后退出。

    所有 DP 线程退出后,包处理线程也会退出:

    线程句柄为 00000000000218C 且线程 ID 为 5204 的包 <PackageID> 的 SMS_DISTRIBUTION_MANAGER 2364 (0x93c) ~DP 线程已结束。
    SMS_DISTRIBUTION_MANAGER 2364 (0x93c) ~所有 DP 线程都已完成包 <PackageID> 处理线程。
    SMS_DISTRIBUTION_MANAGER 2364 (0x93c) ~ 正在退出包 PackageID>的包<处理线程。

步骤 10:SMSDBMON 通知 PkgXferMgr 处理步骤 9-3 中创建的作业

在步骤 9-3 中创建 PkgxferMgr 作业后,SMSDBMON 会检测表中的更改 DistributionJobs ,并在 中删除 PkgTransferMgr.box PKN 文件,以指示 PkgXferMgr 处理作业:

SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) RCV:DistributionJob_Creation的 DistributionJobs 上的更新 [<PackageID>][1035292]
SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) SND:已删除 E:\ConfigMgr\inboxes\PkgTransferMgr.box\<PackageID>。PKN [1035292]

步骤 11:PkgXferMgr 唤醒以处理作业

  1. main PkgXferMgr 线程创建一个发送到指定 DP 的线程:

    SMS_PACKAGE_TRANSFER_MANAGER 5392 (0x1510) 找到 ID 为 577 的发送请求,包: <PackageID>,版本:1,优先级:2,目标:PS1DP1.CONTOSO.COM,DPPriority: 200
    SMS_PACKAGE_TRANSFER_MANAGER 5392 (0x1510) ~已创建发送线程 (线程 ID = 0x12EC)

  2. 发送线程将内容复制到 DP。

    发送线程开始将包内容复制到 DP。 此过程涉及将包中的所有文件复制到目录中的 SMS_DP$ DP。 由于未将包重新分发到 DP,因此“重新分发”操作设置为 0,这意味着如果 DP 上的内容库中已存在某个文件,则不会重新存储该文件。

    SMS_PACKAGE_TRANSFER_MANAGER 4844 (0x12ec) 从作业 577 开始发送线程,包: <PackageID>,版本:1,优先级:2,服务器:PS1DP1.CONTOSO.COM,DPPriority: 200
    SMS_PACKAGE_TRANSFER_MANAGER 4844 (0x12ec) pkg <PackageID> 版本 1、状态 0 和分发点 [“Display=\PS1DP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP1.CONTOSO.COM\~
    SMS_PACKAGE_TRANSFER_MANAGER 4844 (0x12ec) 发送包包的旧内容 <PackageID.1><>
    SMS_PACKAGE_TRANSFER_MANAGER 4844 (0x12ec) Redistribute=0,Related=
    SMS_PACKAGE_TRANSFER_MANAGER 4844 (0x12ec) 发送文件“\\PS1DP1.CONTOSO.COM\SMS_DP$\73E055438D4731F41DB6C3BCB90919F60000226B330C73942454A174D7E26533-PackageID.1.temp”
    SMS_PACKAGE_TRANSFER_MANAGER 4844 (0x12ec) 在 PackageID.1> 中添加 <Dummy1.txt 文件。
    SMS_PACKAGE_TRANSFER_MANAGER 4844 (0x12ec) 已完成远程 DP PS1DP1.CONTOSO.COM 的后期操作
    SMS_PACKAGE_TRANSFER_MANAGER 4844 (0x12ec) ~发送已完成
    SMS_PACKAGE_TRANSFER_MANAGER 4844 (0x12ec) 用户 (NT AUTHORITY\SYSTEM) 从计算机 (PS1SITE.CONTOSO.COM) 运行应用程序 (SMS_PACKAGE_TRANSFER_MANAGER) 正在从站点 (PS1 提交 SDK 更改)
    SMS_PACKAGE_TRANSFER_MANAGER 4844 (0x12ec) ~已完成将 SWD 包 <PackageID> 版本 1 发送到分发点 PS1DP1.CONTOSO.COM
    SMS_PACKAGE_TRANSFER_MANAGER 4844 (0x12ec) STATMSG:ID=8200 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_PACKAGE_TRANSFER_MANAGER” SYS=PS1SITE。CONTOSO.COM SITE=PS1 PID=5428 TID=4844 GMTDATE=Mon May 16:34:27.614 2016 ISTR0=“<PackageID>” ISTR1=“1” ISTR2=“PS1DP1.CONTOSO.COM” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“” ISTR7=“” ISTR8=“” ISTR9=“” NUMATTRS=2 AID0=400 AVAL0=“<PackageID>” AID1=410 AVAL1=“1”

  3. 发送线程将状态消息发送到 DistMgr。

    发送线程 (成功/失败) 发送内容后,会将状态发送到 DistMgr,以便 DistMgr 可以处理和更新数据库中的状态。 通过删除目录中包含包状态的 DistMgr.box\incoming STA 文件,将此状态发送到 DistMgr。

    SMS_PACKAGE_TRANSFER_MANAGER 4844 (0x12ec) pkg <PackageID> 版本 1、状态 3 和分发点 [“Display=\\PS1DP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP1.CONTOSO.COM\~ 的分发管理器发送状态
    SMS_PACKAGE_TRANSFER_MANAGER 4844 (0x12ec) STATMSG: ID=8210 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_PACKAGE_TRANSFER_MANAGER” SYS=PS1SITE。CONTOSO.COM SITE=PS1 PID=5428 TID=4844 GMTDATE=Mon May 16:34:27.614 2016 ISTR0=“<PackageID>” ISTR1=“1” ISTR2=“PS1DP1.CONTOSO.COM” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“ISTR6=”“ ISTR6=”“ ISTR7=”“ ISTR8=”“ ISTR9=”“ NUMATTRS=3 AID0=400 AVAL0=”<PackageID>“ AID1=410 AVAL1=”1“ AID2=404 AVAL2=”[“Display=\\PS1DP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP1.CONTOSO.COM\”
    SMS_PACKAGE_TRANSFER_MANAGER 4844 (0x12ec) 发送线程完成~

步骤 12:SMS DP 提供程序将步骤 11-2 中复制的内容添加到内容库

在步骤 11-2 中,复制每个文件后,PkgXferMgr 指示 DP 对 SMS DP 提供程序命名空间中的 WMI 类执行方法 SMS_DistributionPoint , (root\SCCMDP) 将文件添加到内容库。 成功将内容添加到内容库后, SMSDPProv.log 将显示以下内容:

2996 (0xbb4) 包“<PackageID>”的内容“PackageID.1>”<已成功添加到内容库

步骤 13:DistMgr 处理步骤 11-3 中发送的状态消息

若要处理在步骤 11-3) 中发送的传入 STA 文件 (,DistMgr 使用复制处理线程。 此线程唤醒以处理 STA 文件,更新数据库中表中的 Type 2 行 PkgStatus,并引发 ID 为 2330 的状态消息,这意味着“分发管理器已成功将包分发到分发点”。

SMS_DISTRIBUTION_MANAGER 6116 (0x17e4) ~处理传入文件 E:\ConfigMgr\inboxes\distmgr.box\INCOMING\1R7IEEHU.STA。
SMS_DISTRIBUTION_MANAGER 6116 (0x17e4) ~处理常规 DP [“Display=\PS1DP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP1.CONTOSO.COM\
SMS_DISTRIBUTION_MANAGER 6116 (0x17e4) ~包 <PackageID 的处理状态更新>
SMS_DISTRIBUTION_MANAGER 6116 (0x17e4) ~已成功更新 [“Display=\PS1DP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP1.CONTOSO.COM\ 的包<>服务器状态,状态 3
SMS_DISTRIBUTION_MANAGER 6116 (0x17e4) STATMSG: ID=2330 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_DISTRIBUTION_MANAGER” SYS=PS1SITE。CONTOSO.COM SITE=PS1 PID=5428 TID=6116 GMTDATE=Mon May 16 16:34:31.679 2016 ISTR0=“<PackageID>” ISTR1=“[”Display=\\PS1DP1.CONTOSO.COM\“]MSWNET:[”SMS_SITE=PS1“]\\PS1DP1.CONTOSO.COM” ISTR2=“” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“” ISTR7=“” ISTR8=“” ISTR9=“” NUMATTRS=2 AID0=400 AVAL0=“<PackageID>” AID1=404 AVAL1=“[”Display=\\PS1DP1.CONTOSO.COM\“]MSWNET:[”SMS_SITE=PS1“]\\PS1DP1.CONTOSO.COM\”
SMS_DISTRIBUTION_MANAGER 6116 (0x17e4) ~成功删除包状态文件 E:\ConfigMgr\inboxes\distmgr.box\INCOMING\1R7IEEHU。Sta

此线程运行以下查询以更新数据库中的状态。

update PkgStatus set Status = 3, UpdateTime = N'Date Time', Location = N'MSWNET:["SMS_SITE=PS1"]\\PS1DP1.CONTOSO.COM\SMSPKGC$\PackageID\', ShareName = N'', HTTPUrl = N'http://PS1DP1.CONTOSO.COM/SMS_DP_SMSPKG$/\PackageID', SourceVersion = 1, Personality = 0, State = 0, SigURL = N'http://PS1DP1.CONTOSO.COM/SMS_DP_SMSSIG$/\PackageID', SigLocation = N'MSWNET:["SMS_SITE=PS1"]\\PS1DP1.CONTOSO.COM\SMSSIG$\\PackageID.1.tar'  where ID = N'\PackageID' and Type = 2 and SiteCode = N'PS1' and PkgServer = N'["Display=\\PS1DP1.CONTOSO.COM\"]MSWNET:["SMS_SITE=PS1"]\\PS1DP1.CONTOSO.COM\'

步骤 14:通过数据库复制将包状态更改复制到其他站点

在数据库中更新包状态后,将通过数据库复制将其复制到其他站点。

将包分发到标准 DP

以下步骤概述了将包分发到主站点中的 DP 时的事件流,并且此主站点服务器已在内容库中具有包的副本:

步骤 1:管理员将包分发到 DP。 管理员可以从直接连接到相关主站点、管理中心站点或其他主站点的管理控制台执行此操作

管理员从控制台将包分发到 DP 后,管理控制台会调用 AddDistributionPoints 类的 SMS_Package 方法,将指定的 DP 添加到包中。 SMSProv.log 显示以下内容:

SMS 提供程序 4416 (0x1140) 上下文:SMSAppName=Configuration Manager 管理员控制台~
SMS 提供程序 4416 (0x1140) ExecMethodAsync:SMS_Package.PackageID=“<PackageID>”::AddDistributionPoints~
SMS 提供程序 4416 (0x1140) CExtProviderClassObject::D oExecuteMethod AddDistributionPoints~
SMS 提供程序 4416 (0x1140) 审核:用户 CONTOSO\管理员调用类SMS_Package实例的已审核方法。~

调用此方法时,SMS 提供程序在 中 PkgServers 插入一行, (Action ADD) 设置为 2

insert PkgServers (PkgID, NALPath, SiteCode, SiteName, SourceSite, LastRefresh, RefreshTrigger, UpdateMask, Action) select N'<PackageID>', N'["Display=\\PS1DP2.CONTOSO.COM\"]MSWNET:["SMS_SITE=PS1"]\\PS1DP2.CONTOSO.COM\', N'PS1', Sites.SiteName, N'PS1', N'04/10/1970 06:35:00', 0, 0, 2  from Sites where SiteCode = N'PS1'
insert PkgNotification (PkgID, Priority, Type, TimeKey) values (N'<PackageID>', 2, 4, GetDate())

步骤 2:如果管理员从其他主站点或管理中心站点分发包,数据库复制服务 (DRS) 将更改复制到相关站点

如果管理员使用连接到管理中心站点或其他主站点的控制台分发此包,DRS 会将更改 PkgServers 复制到其他站点。

步骤 3:SMSDBMON 通知 DistMgr 处理包

将更改复制到 DP 所在的站点后,SMSDBMON 会检测表中的更改 PkgNotification ,并在 中删除 DistMgr.box PKN 文件,以指示 DistMgr 处理包:

SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) RCV: INSERT on PkgNotification for PkgNotify_Add [<PackageID>][1035417]
SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) SND:已删除 E:\ConfigMgr\inboxes\distmgr.box\<PackageID>。PKN [1035417]

步骤 4:DistMgr 唤醒以处理包

DistMgr 在检测到 PKN 文件并处理包后唤醒。

  1. main DistMgr 线程启动包处理线程。

    main DistMgr 线程将包添加到包处理队列,并创建包处理线程。

    SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) 将包“PackageID>”<添加到包处理队列。
    SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) ~当前使用 0(共 3 个允许的包处理线程)。
    SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) ~包“PackageID>”<的已启动包处理线程,线程 ID = 0xB58 (2904)

  2. 包处理线程创建 DP 线程来处理包操作,然后等待它们退出。

    包处理线程 (TID 2904) 处理包操作, (添加/更新/删除 DP 的) 。 在这种情况下,包已添加到 DP,包处理线程创建 DP 线程以将包添加到 DP。 创建 DP 线程后,包处理线程将等待所有 DP 线程退出,然后进一步移动:

    SMS_DISTRIBUTION_MANAGER 2904 (0xb58) ~处理包 <PackageID> (SourceVersion:1;StoredVersion:1)
    SMS_DISTRIBUTION_MANAGER 2904 (0xb58) 未为包 <PackageID> 指定任何操作,但此包可能会有包服务器更改。
    SMS_DISTRIBUTION_MANAGER 2904 (0xb58) 开始将 package <PackageID> 添加到服务器 [“Display=\PS1DP2.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP2.CONTOSO.COM\...
    SMS_DISTRIBUTION_MANAGER 2904 (0xb58) ~创建 DP 处理线程 3792,以便在<>服务器 [“Display=\\PS1DP2.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP2.CONTOSO.COM\ SMS_DISTRIBUTION_MANAGER 2904 (0xb58) ~等待所有 DP 线程完成 package <PackageID> 处理线程。

  3. DP 线程创建包传输管理器 (PkgXferMgr) 作业,以将内容传输到 DP,然后退出。

    DP 线程 (TID 3792) 开始将包添加到 DP 的工作。 DP 线程不会直接将包内容复制到 DP,而是为 PkgXferMgr 创建一个作业,指示它将包内容复制到 DP。 以下日志条目显示了创建 PkgXferMgr 作业的 DP 线程。 创建作业后,DP 线程的工作完成,DP 线程退出。

    SMS_DISTRIBUTION_MANAGER 3792 (0xed0) DP 线程:尝试在 DP 上 [<>“Display=\\PS1DP2.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP2.CONTOSO.COM\
    SMS_DISTRIBUTION_MANAGER 3792 (0xed0) ~已创建包传输作业,以便将包<PackageID> 发送到分发点 [“Display=\PS1DP2.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP2.CONTOSO.COM\。
    SMS_DISTRIBUTION_MANAGER 3792 (0xed0) STATMSG: ID=2357 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_DISTRIBUTION_MANAGER” SYS=PS1SITE。CONTOSO.COM SITE=PS1 PID=5428 TID=3792 GMTDATE=Mon May 16 19:26:58.642 2016 ISTR0=“<PackageID>” ISTR1=“[”Display=\\PS1DP2.CONTOSO.COM\“]MSWNET:[”SMS_SITE=PS1“]\\PS1DP2.CONTOSO.COM\” ISTR2=“” ISTR 3=“”“ ISTR4=”“ ISTR5=”“ ISTR6=”“ ISTR7=”“ ISTR8=”“ ISTR9=”“ NUMATTRS=2 AID0=400 AVAL0=”<PackageID>“ AID1=404 AVAL1=”[“Display=\\PS1DP2.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP2.CONTOSO.COM\”

    当 DP 线程创建 PkgXferMgr 作业时,它会通过在表中插入一行 DistributionJobs 来实现。

    insert into DistributionJobs (DPID,PkgID,PackageVersion,State,CreationTime,Action) values(35,N'PackageID',1,0,N'2016/05/16 15:26:58',1)
    

    创建作业后,DP 线程还会重置表中 PkgServers_LDP 的操作

    update PkgServers_L set UpdateMask = 0, Action = 0, RefreshTrigger = 0, LastRefresh = N'05/16/2016 19:26:58' where PkgID = N'PackageID' and NALPath = N'["Display=\\PS1DP2.CONTOSO.COM\"]MSWNET:["SMS_SITE=PS1"]\\PS1DP2.CONTOSO.COM\' and SiteCode = N'PS1' and Action <> 3
    
  4. 包处理线程在所有 DP 线程退出后退出。

    所有 DP 线程退出后,包处理线程也会退出。

    SMS_DISTRIBUTION_MANAGER 2904 (0xb58) ~DP 线程,包 <PackageID> 的线程句柄0000000000002524,线程 ID 为 3792 已结束。
    SMS_DISTRIBUTION_MANAGER 2904 (0xb58) ~所有 DP 线程都已完成包 <PackageID> 处理线程。
    SMS_DISTRIBUTION_MANAGER 2904 (0xb58) 包包 ID> 的退出包<处理线程。

步骤 5:SMSDBMON 通知 PkgXferMgr 处理作业

创建 PkgxferMgr 作业后,SMSDBMON 这次会检测表中的更改 DistributionJobs ,并在 中删除 PkgTransferMgr.box PKN 文件,以指示 PkgXferMgr 处理作业:

SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) RCV:DistributionJob_Creation的 DistributionJobs 上的更新 [<PackageID>][1035419]
SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) SND:已删除 E:\ConfigMgr\inboxes\PkgTransferMgr.box\<PackageID>。PKN [1035419]

步骤 6:PkgXferMgr 唤醒以处理作业

  1. main PkgXferMgr 线程创建发送线程。

    main PkgXferMgr 线程创建发送线程,以将包发送到指定的 DP。

    SMS_PACKAGE_TRANSFER_MANAGER 5392 (0x1510) 找到 ID 为 582 的发送请求,包: <PackageID>,版本:1,优先级:2,目标:PS1DP2.CONTOSO.COM,DPPriority: 200
    SMS_PACKAGE_TRANSFER_MANAGER 5392 (0x1510) ~已创建发送线程 (线程 ID = 0xBCC)

  2. 发送线程将内容复制到 DP。

    发送线程 (TID 3020) 开始将包内容复制到 DP。 此过程涉及将包中的所有文件复制到目录中的 SMS_DP$ DP。 由于包未重新分发到 DP,因此重新分发操作设置为 0,这意味着如果 DP 上的内容库中已存在文件,则不会重新复制该文件。

    SMS_PACKAGE_TRANSFER_MANAGER 3020 (0xbcc) 从作业 582 开始发送线程,包: <PackageID>,版本:1,优先级:2,服务器:PS1DP2.CONTOSO.COM,DPPriority: 200
    SMS_PACKAGE_TRANSFER_MANAGER 3020 (0xbcc) pkg <PackageID> 版本 1、状态 0 和分发点 [“Display=\PS1DP2.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP2.CONTOSO.COM\~ 的分发管理器发送状态
    SMS_PACKAGE_TRANSFER_MANAGER 3020 (0xbcc) 为 <package PackageID> 发送旧内容 <PackageID.1>
    SMS_PACKAGE_TRANSFER_MANAGER 3020 (0xbcc) Redistribute=0, Related= SMS_PACKAGE_TRANSFER_MANAGER 3020 (0xbcc) 发送文件 '\PS1DP2.CONTOSO.COM\SMS_DP$\73E055438D4731F41DB6C3BCB90919F60000226B330C73942454A174D7E26533-PackageID.1.temp'
    SMS_PACKAGE_TRANSFER_MANAGER 3020 (0xbcc) 在 PackageID.1> 中添加 <Dummy1.txt 文件
    SMS_PACKAGE_TRANSFER_MANAGER 3020 (0xbcc) 已完成远程 DP PS1DP2.CONTOSO.COM 的后期操作
    SMS_PACKAGE_TRANSFER_MANAGER 3020 (0xbcc) ~发送已完成
    SMS_PACKAGE_TRANSFER_MANAGER 3020 (0xbcc) ~已完成将 SWD 包 <PackageID> 版本 1 发送到分发点 PS1DP2.CONTOSO.COM
    SMS_PACKAGE_TRANSFER_MANAGER 3020 (0xbcc) STATMSG: ID=8200 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_PACKAGE_TRANSFER_MANAGER” SYS=PS1SITE。CONTOSO.COM SITE=PS1 PID=5428 TID=3020 GMTDATE=Mon May 16 19:28:12.991 2016 ISTR0=“<PackageID>” ISTR1=“1” ISTR2=“PS1DP2.CONTOSO.COM” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“” ISTR7=“” ISTR8=“” ISTR9=“” NUMATTRS=2 AID0=400 AVAL0=“<PackageID>” AID1=410 AVAL1=“1”

  3. 发送线程将状态消息发送到 DistMgr。

    发送线程 (成功/失败) 发送内容后,会将状态发送到 DistMgr,以便 DistMgr 可以处理和更新数据库中的状态。 通过删除目录中包含包状态的 STA 文件,将此状态 DistMgr.box\incoming 发送到 DistMgr:

    SMS_PACKAGE_TRANSFER_MANAGER 3020 (0xbcc) pkg PackageID 版本 1、状态 3 和分发点 [“Display=\\PS1DP2.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP2.CONTOSO.COM\~
    SMS_PACKAGE_TRANSFER_MANAGER 3020 (0xbcc) STATMSG: ID=8210 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_PACKAGE_TRANSFER_MANAGER” SYS=PS1SITE。CONTOSO.COM SITE=PS1 PID=5428 TID=3020 GMTDATE=Mon May 16 19:28:13.003 2016 ISTR0=“<PackageID>” ISTR1=“1” ISTR2=“PS1DP2.CONTOSO.COM” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“” ISTR7=“” ISTR8=“” ISTR9=“” NUMATTRS=3 AID0=400 AVAL0=“<PackageID>” AID1=410 AVAL1=“1” AID2=404 AVAL2=“[”Display=\\PS1DP2.CONTOSO.COM\“]MSWNET:[”SMS_SITE=PS1“]\\PS1DP2.CONTOSO.COM\”
    SMS_PACKAGE_TRANSFER_MANAGER 3020 (0xbcc) 发送线程完成~

步骤 7:SMS DP 提供程序将内容添加到内容库

复制每个文件后,PkgXferMgr 指示 DP 通过针对 SMS_DistributionPoint SMS DP 提供程序命名空间中的 WMI 类执行方法将文件添加到内容库, (root\SCCMDP) 。 成功将内容添加到内容库后, SMSDPProv.log 显示以下内容:

1304 (0x518) 包“<PackageID>”的内容“PackageID.1>”<已成功添加到内容库

步骤 8:DistMgr 处理 PkgXferMgr 发送的状态消息

为了处理步骤 6-3) 中发送的传入 STA 文件 (,DistMgr 使用复制处理线程。 此线程唤醒以处理 STA 文件,更新数据库中表中的 Type 2 行 PkgStatus ,并引发 ID 为 2330 的状态消息,这意味着“分发管理器已成功将包分发到分发点”。

SMS_DISTRIBUTION_MANAGER 6116 (0x17e4) ~处理传入文件 E:\ConfigMgr\inboxes\distmgr.box\INCOMING\FV8S6B6M.STA。
SMS_DISTRIBUTION_MANAGER 6116 (0x17e4) ~处理常规 DP [“Display=\PS1DP2.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP2.CONTOSO.COM\
SMS_DISTRIBUTION_MANAGER 6116 (0x17e4) ~包 <PackageID 的处理状态更新>
SMS_DISTRIBUTION_MANAGER 6116 (0x17e4) ~已成功更新 [“Display=\PS1DP2.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP2.CONTOSO.COM\ 的包<>服务器状态,状态 3
SMS_DISTRIBUTION_MANAGER 6116 (0x17e4) STATMSG: ID=2330 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_DISTRIBUTION_MANAGER” SYS=PS1SITE。CONTOSO.COM SITE=PS1 PID=5428 TID=6116 GMTDATE=Mon May 16 19:28:16.577 2016 ISTR0=“<PackageID>” ISTR1=“[”Display=\\PS1DP2.CONTOSO.COM\“]MSWNET:[”SMS_SITE=PS1“]\\PS1DP2.CONTOSO.COM\” ISTR2=“” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“” ISTR7=“” ISTR8=“” ISTR9=“” NUMATTRS=2 AID0=400 AVAL0=“<PackageID>” AID1=404 AVAL1=“[”Display=\PS1DP2.CONTOSO.COM\“]MSWNET:[”SMS_SITE=PS1“]\\PS1DP2.CONTOSO.COM\”
SMS_DISTRIBUTION_MANAGER 6116 (0x17e4) ~成功删除包状态文件 E:\ConfigMgr\inboxes\distmgr.box\INCOMING\FV8S6B6M。Sta

此线程运行以下查询以更新数据库中的状态。

update PkgStatus set Status = 3, UpdateTime = N'Date Time', Location = N'MSWNET:["SMS_SITE=PS1"]\\PS1DP2.CONTOSO.COM\SMSPKGC$\\PackageID\', ShareName = N'', HTTPUrl = N'http://PS1DP2.CONTOSO.COM/SMS_DP_SMSPKG$/\PackageID', SourceVersion = 1, Personality = 0, State = 0, SigURL = N'http://PS1DP2.CONTOSO.COM/SMS_DP_SMSSIG$/\PackageID', SigLocation = N'MSWNET:["SMS_SITE=PS1"]\\PS1DP2.CONTOSO.COM\SMSSIG$\\PackageID.1.tar'  where ID = N'\PackageID' and Type = 2 and SiteCode = N'PS1' and PkgServer = N'["Display=\\PS1DP2.CONTOSO.COM\"]MSWNET:["SMS_SITE=PS1"]\\PS1DP2.CONTOSO.COM\'

步骤 9:通过 DRS 将包状态更改复制到其他站点

在数据库中更新包状态后,将通过数据库复制将其复制到其他站点。

分发包以拉取 DP

以下步骤概述了将包分发到主站点中的拉取 DP 且有问题的主站点服务器在内容库中已有包的副本时的事件流。

步骤 1:管理员将包分发到 DP。 管理员可以从直接连接到相关主站点、管理中心站点或其他主站点的管理控制台执行此操作

在管理员从控制台将包分发到 DP 后,控制台在以下示例中调用AddDistributionPoints适用于应用程序的 (SMS_ContentPackage 的适当派生类SMS_Package的方法) 类,以将指定的 DP 添加到包中。 SMSProv.log 显示:

SMS 提供程序 22172 (0x569c) 上下文:SMSAppName=Configuration Manager 管理员控制台~
SMS 提供程序 22172 (0x569c) ExecMethodAsync :SMS_ContentPackage.PackageID='P010000F'::AddDistributionPoints~
SMS 提供程序 22172 (0x569c) CExtProviderClassObject::D oExecuteMethod AddDistributionPoints~
SMS 提供程序 22172 (0x569c) 审核:用户 CONTOSO\管理员调用类实例的已审核方法SMS_ContentPackage。~

调用此方法时,SMS 提供程序在 PkgServers 中插入一行,设置为 Action2 (ADD) 并在表中创建 PkgNotification 通知。

步骤 2:如果管理员从其他主站点或管理中心站点分发包,DRS 会将更改复制到有问题的站点

如果管理员使用连接到管理中心站点或其他主站点的控制台分发了此包,DRS 会将 PkgServers 中的更改复制到其他站点。

步骤 3:SMSDBMON 通知 DistMgr 处理包

将此更改复制到 DP 所在的站点后,SMSDBMON 将检测表中的更改 PkgNotification ,并在 中删除 DistMgr.box PKN 文件,以指示 DistMgr 处理包。

SMS_DATABASE_NOTIFICATION_MONITOR 29748 (0x7434) RCV: INSERT on PkgNotification for PkgNotify_Add [P010000F ][145011]
SMS_DATABASE_NOTIFICATION_MONITOR 29748 (0x7434) SND:已删除 E:\ConfigMgr\inboxes\distmgr.box\P010000F。PKN [145011]

步骤 4:DistMgr 唤醒以处理包

DistMgr 在检测到 PKN 文件并处理包后唤醒。

  1. 主 DistMgr 线程启动包处理线程。

    主 DistMgr 线程将包添加到包处理队列,并创建包处理线程。

    SMS_DISTRIBUTION_MANAGER 5292 (0x14ac) 将包“P010000F”添加到包处理队列。
    SMS_DISTRIBUTION_MANAGER 5292 (0x14ac) ~当前使用 3 个允许的包处理线程中的 0 个。
    SMS_DISTRIBUTION_MANAGER 5292 (0x14ac) ~包“P010000F”的已启动包处理线程,线程 ID = 0x2C44 (11332)

  2. 包处理线程创建 DP 线程 () 来处理包操作,并等待它们退出。

    包处理线程 (TID 11332) 处理包操作, (添加/更新/删除 DP () 的) 。 在这种情况下,包已添加到 DP,包处理线程创建 DP 线程以将包添加到 DP。 创建 DP 线程 () 后,包处理线程将等待所有 DP 线程退出,然后再进一步移动。

    SMS_DISTRIBUTION_MANAGER 11332 (0x2c44) ~处理包P010000F (SourceVersion:3;StoredVersion:3)
    SMS_DISTRIBUTION_MANAGER 11332 (0x2c44) 未为包P010000F指定任何操作,但此包可能会有包服务器更改。
    SMS_DISTRIBUTION_MANAGER 11332 (0x2c44) 开始将包P010000F添加到服务器 [“Display=\P01PDP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=P01”]\\P01PDP1.CONTOSO.COM\...
    SMS_DISTRIBUTION_MANAGER 11332 (0x2c44) ~已创建 DP 处理线程 22444,用于 P010000F在服务器 [“Display=\\P01PDP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=P01”]\\P01PDP1.CONTOSO.COM\
    SMS_DISTRIBUTION_MANAGER 11332 (0x2c44) ~正在等待包P010000F处理线程完成所有 DP 线程。

  3. DP 线程创建 PkgXferMgr 作业,以将内容传输到 DP 并退出。

    DP 线程 (TID 22444) 开始将包添加到 DP。 DP 线程不会直接将包内容复制到 DP,而是为包传输管理器创建一个作业, (PkgXferMgr) 指示它将包内容复制到 DP。 以下日志条目显示了正在创建 PkgXferMgr 作业的 DP 线程。 创建作业后,DP 线程的工作完成,DP 线程退出。

    SMS_DISTRIBUTION_MANAGER 22444 (0x57ac) DP 线程:尝试在 DP 上添加或更新包P010000F [“Display=\P01PDP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=P01”]\\P01PDP1.CONTOSO.COM\
    SMS_DISTRIBUTION_MANAGER 22444 (0x57ac) Package Server [“Display=\P01PDP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=P01”]\\P01PDP1.CONTOSO.COM\ 是 PullDP。
    SMS_DISTRIBUTION_MANAGER 22444 (0x57ac) ~已创建包传输作业,以便将包P010000F发送到分发点 [“Display=\P01PDP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=P01”]\\P01PDP1.CONTOSO.COM\。
    SMS_DISTRIBUTION_MANAGER 22444 (0x57ac) STATMSG: ID=2357 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_DISTRIBUTION_MANAGER” SYS=P01SITE。CONTOSO.COM SITE=P01 PID=36968 TID=22444 GMTDATE=Mon Jan 07 20:05:18.665 2019 ISTR0=“P010000F” ISTR1=“[”Display=\\P01PDP1.CONTOSO.COM\“]MSWNET:[”SMS_SITE=P01“]\\P01PDP1.CONTOSO.COM\” ISTR2=“” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“” ISTR7=“” ISTR8=“” ISTR9=“” NUMATTRS=2 AID0=400 AVAL0=“P010000F” AID1=404 AVAL1=“[”Display=\\P01PDP1.CONTOSO.COM\“]MSWNET:[”SMS_SITE=P01“]\\P01PDP1.CONTOSO.COM\”

    当 DP 线程创建 PkgXferMgr 作业时,它会通过在表中插入一行 DistributionJobs 来实现。

    insert into DistributionJobs (DPID,PkgID,PackageVersion,State,CreationTime,Action) values(8,N'P010000F',3,0,N'2019/01/07 20:05:18',1)
    

    创建作业后,DP 线程还会重置表中 PkgServers_L DP 的操作。

  4. 所有 DP 线程退出后,包处理线程都会退出。

    所有 DP 线程退出后,包处理线程也会退出。

    线程句柄为 000000000003E2C 且线程 ID 为 22444 的包P010000F的 SMS_DISTRIBUTION_MANAGER 11332 (0x2c44) ~DP 线程。
    SMS_DISTRIBUTION_MANAGER 11332 (0x2c44) ~所有 DP 线程都已完成包P010000F处理线程。
    SMS_DISTRIBUTION_MANAGER 11332 (0x2c44) ~StoredPkgVersion (3) 包P010000F。 数据库中的 StoredPkgVersion 为 3。
    SMS_DISTRIBUTION_MANAGER 11332 (0x2c44) ~SourceVersion (包P010000F 3) 。 数据库中的 SourceVersion 为 3。
    SMS_DISTRIBUTION_MANAGER 11332 (0x2c44) 包P010000F的退出包处理线程。

步骤 5:SMSDBMON 通知 PkgXferMgr 处理作业

创建 PkgxferMgr 作业后,这次 SMSDBMON 将检测表中的更改 DistributionJobs ,并在 中删除 PkgTransferMgr.box PKN 文件,以指示 PkgXferMgr 处理作业。

SMS_DATABASE_NOTIFICATION_MONITOR 29748 (0x7434) RCV:针对DistributionJob_Creation的 DistributionJobs 更新 [P010000F ][145013]
SMS_DATABASE_NOTIFICATION_MONITOR 29748 (0x7434) SND:已删除 E:\ConfigMgr\inboxes\PkgTransferMgr.box\P010000F。PKN [145013]

步骤 6:PkgXferMgr 唤醒以处理作业

  1. 主 PkgXferMgr 线程创建一个请求 DP 发送线程,以将包发送到指定的 DP。

    SMS_PACKAGE_TRANSFER_MANAGER 32936 (0x80a8) 找到 ID 为 190 的发送请求,包:P010000F,版本:3,优先级:2,目标:P01PDP1.CONTOSO.COM,DPPriority: 200
    SMS_PACKAGE_TRANSFER_MANAGER 32936 (0x80a8) ~已创建发送线程 (线程 ID = 0x2B4C)

  2. 拉取 DP 发送线程向拉取 DP 发送通知

    与常规发送线程不同,拉取 DP 发送线程 (TID 11084) 指示拉取 DP 通过发送通知开始下载内容。 此操作分 4 个阶段完成。

    阶段 1: 拉取 DP 发送线程检查要分发到请求 DP 的内容在源 DP () 上是否可用。 如果内容在源 DP 上不可用,则请求 DP 发送线程将在日志中以以下消息结束,并引发 状态消息 ID 8212 ,这意味着“此请求分发点没有可从中下载内容的源”。稍后我们会再试一次。 稍后会根据“软件分发组件>配置请求分发点”选项卡中配置的重试设置尝试重试。

    ~对于拉取 DP P01PDP1,找不到包P0100009下一个或多个内容的源位置。CONTOSO.COM。 未发送通知。
    ~ PullDP 通知失败。 失败计数 = 1/30,重启时间 = 1/10/2019 2:00:42 AM 东部标准时间
    STATMSG:ID=8212 SEV=I LEV=M SOURCE='SMS Server' COMP='SMS_PACKAGE_TRANSFER_MANAGER' SYS=P01SITE。CONTOSO.COM SITE=P01 PID=2336...

    下面是在源 DP 上提供内容时为检查执行的查询:

    SELECT p.SourceDPServerName FROM PullDPMap p INNER JOIN ContentDPMap c ON p.SourceDPServerName = c.ServerName WHERE c.AccessType = 1 AND p.PullDPServerName = 'P01PDP1.CONTOSO.COM' AND c.ContentID = 'P0100009' AND c.Version = 4
    

    阶段 2: 拉取 DP 发送线程检查,以查看拉取 DP 是否具有更多作业的容量。 默认情况下,拉取 DP 可以同时处理 50 个作业。 这由 的 PullDP 数量活动作业 SCF 属性 SMS_DISTRIBUTION_MANAGER 控制,建议不要增加容量,因为它可能会带来 可伸缩性问题。 如果请求 DP 已在最大容量 (工作,即) 有 50 个正在运行的作业,则请求 DP 发送线程将在日志中以以下消息结束,稍后会根据“软件分发组件配置>请求分发点”选项卡中配置的重试设置重试。

    PullDP <DPNALPATH> 已达到最大容量 50
    PullDP 没有容量。 重启时间 = <时间戳>
    STATMSG:ID=8211 SEV=E LEV=M SOURCE=“SMS Server” COMP=“SMS_PACKAGE_TRANSFER_MANAGER” SYS=P01SITE。CONTOSO.COM SITE=P01 PID=17252 TID=4712...

    下面是用于确定拉取 DP 是否处于容量的查询:

    SELECT COUNT(*) FROM DistributionJobs job
    JOIN DistributionPoints dp ON dp.DPID=job.DPID AND dp.NALPath='["Display=\\P01PDP1.CONTOSO.COM\"]MSWNET:["SMS_SITE=P01"]\\P01PDP1.CONTOSO.COM\'
    WHERE job.State in (2, 3, 4) AND (job.Action<>5) AND (ISNULL(job.SendAction, '') <> '')
    

    阶段 3: 拉取 DP 发送线程发送一个包信息捆绑包文件,其中包含需要下载的文件的元数据。 此文件是 <PackageID>。从 站点服务器内容库的包 INI 文件生成的 TZ 文件,并将其复制到 SMS_DP$ 拉取 DP 上的目录。

    SMS_PACKAGE_TRANSFER_MANAGER 11084 (0x2b4c) 从作业 190 开始拉取 DP 发送线程:190,包:P010000F,版本:3,优先级:2,服务器:P01PDP1.CONTOSO.COM,DPPriority: 200
    SMS_PACKAGE_TRANSFER_MANAGER 11084 (0x2b4c) 将包信息包P010000F发送到 PullDP。 [“Display=\\P01PDP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=P01”]\\P01PDP1.CONTOSO.COM\

    阶段 4:拉取 DP 发送线程在命名空间内的root\SCCMDP拉取 DP 上创建类的SMS_PullDPNotification实例,其中包含包 ID、包版本和 XML 通知。 创建 类的SMS_PullDPNotification实例后,它会在 命名空间中的 类中SMS_DistributionPointroot\SCCMDP执行 NotifyPullDP 方法,该方法指示 DP WMI 提供程序通知拉取 DP 组件开始下载内容。

    SMS_PACKAGE_TRANSFER_MANAGER 11084 (0x2b4c) ~已成功对拉取 DP P01PDP1 执行 WMI 操作。CONTOSO.COM。
    SMS_PACKAGE_TRANSFER_MANAGER发送了 11084 (0x2b4c) ~ PullDP 通知。 尝试计数 = 1/30,重启时间 = 1/7/2019 4:06:04 PM 东部标准时间
    SMS_PACKAGE_TRANSFER_MANAGER 11084 (0x2b4c) 拉取 DP 发送线程完成~

    通知 XML 是通过调用 fnGetPullDPXMLNotification生成的。 下面是生成通知 XML 查询的示例查询的外观,该查询显示 操作添加 的,因为内容未重新分发:

    SELECT [dbo].[fnGetPullDPXMLNotification]('P010000F', 3, 'P01PDP1.CONTOSO.COM', 2, 'add', 1, 'O:SYG:BAD:P(A;;FA;;;BA)(A;OICIIO;GA;;;BA)(A;;0x1200a9;;;BU)(A;OICIIO;GXGR;;;BU)(A;;FA;;;BA)(A;OICIIO;GA;;;BA)', 0, 32780, '3ED23B9869F7E10E19439F11341405FF76E22022E56468DCF211475899BD2914', '') AS Notification
    

    XML 通知包含内容元数据以及源 DP 位置。 下面是示例 XML 通知的外观:

    <PullDPNotification>
       <PullDPPackageNotification PackageID='P010000F' Version='3' Action='redist' AllowFallback='true' Priority='2' PackageType='content' PackageTypeID='8' PackageFlags='16777216' PackageSize='5532' SDDL='O:SYG:BAD:P(A;;FA;;;BA)(A;OICIIO;GA;;;BA)(A;;0x1200a9;;;BU)(A;OICIIO;GXGR;;;BU)(A;;FA;;;BA)(A;OICIIO;GA;;;BA)' HashAlgorithm='32780' Hash='3ED23B9869F7E10E19439F11341405FF76E22022E56468DCF211475899BD2914' ExpandShare='0' ShareName='' ShareType='1'>
         <PullDPPackageContent ContentID='Content_3c9813ba-d7ab-4963-929c-36f90f479613.1' RelatedContentID='Content_162d6f21-176e-4e4b-a620-6e94a4b9f73e.1'>
            <DPLocation DPUrl='http://P01MP.CONTOSO.COM/SMS_DP_SMSPKG$/Content_3c9813ba-d7ab-4963-929c-36f90f479613.1' Rank='1' Type='Windows NT Server' Protocol='https' />
         </PullDPPackageContent>
       </PullDPPackageNotification>
    </PullDPNotification>
    
  3. 拉取 DP 发送线程会更新作业,以便启动状态轮询。

    与在成功完成后删除作业的标准 DP 的发送线程不同,拉取 DP 发送线程在成功将通知发送到拉取 DP 后,会 DistributionJobs 更新表中的作业并将 设置为 SendActionPullQueryResultAction

    update DistributionJobs set DPID=8,SendAction = N'PullQueryResultAction', LastUpdateTime = N'2019/01/07 21:07:14' where JobID = 194
    

    状态消息用作从拉取 DP 报告分发状态的主要机制,分发作业将保留在数据库中,直到我们收到作业成功/失败状态的通知。 PkgXferMgr 按计划间隔开始轮询, (在“软件分发组件属性>请求分发点”选项卡中配置,) 检查是否已在请求 DP 上下载内容。 尽管拉取 DP 发送包含分发状态的状态消息,但 PkgXferMgr 也会执行轮询作为备份机制来获取分发状态,以防拉取 DP 出于某种原因无法将状态消息发送到管理点。

  4. (轮询间隔) :创建拉取 DP 发送线程以从拉取 DP 轮询分布状态。

    在“软件分发组件属性”中指定的值检查分发状态之前,轮询 () 分钟之前,将启动新的请求 DP 发送线程。 在下面的示例中,它会查询拉取 DP,发现内容已成功安装,并向分发管理器发送状态消息。

    SMS_PACKAGE_TRANSFER_MANAGER 18724 (0x4924) 从作业 194 开始拉取 DP 发送线程,包:P010000F,版本:3,优先级:2,服务器:P01PDP1.CONTOSO.COM,DPPriority: 200
    SMS_PACKAGE_TRANSFER_MANAGER 18724 (0x4924) ~已完成将 SWD 包P010000F版本 3 发送到分发点 P01PDP1.CONTOSO.COM
    SMS_PACKAGE_TRANSFER_MANAGER 18724 (0x4924) pkg P010000F版本 3 状态 3 和分发点 [“Display=\\P01PDP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=P01”]\\P01PDP1.CONTOSO.COM\~
    SMS_PACKAGE_TRANSFER_MANAGER 18724 (0x4924) STATMSG: ID=8210 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_PACKAGE_TRANSFER_MANAGER” SYS=P01SITE。CONTOSO.COM SITE=P01 PID=36968 TID=18724 GMTDATE=Mon Jan 07 22:22:16.059 2019 ISTR0=“P010000F” ISTR1=“3” ISTR2=“P01PDP1.CONTOSO.COM” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“ ” ISTR7=“” ISTR8=“” ISTR9=“” NUMATTRS=3 AID0=400 AVAL0=“P010000F” AID1=410 AVAL1=“3” AID2=404 AVAL2=“[”Display=\\P01PDP1.CONTOSO.COM\“]MSWNET:[”SMS_SITE=P01“]\\P01PDP1.CONTOSO.COM\”
    SMS_PACKAGE_TRANSFER_MANAGER 18724 (0x4924) 拉取 DP 发送线程完成~

    请注意,当从拉取 DP 收到成功状态消息后,作业将从数据库中删除,这会导致轮询停止。

步骤 7:SMS DP 提供程序通知请求 DP 组件 (CcmExec) 处理作业

执行 方法时 NotifyPullDP ,DP WMI 提供程序通知托管拉取 DP 组件的 CcmExec。 SMSDPProv.log 显示:

4688 (0x1250) 已成功通知 PullDP

步骤 8:从 WMI () 拉取 DP 加载作业

收到通知后,拉取 DP 组件从 WMI 加载作业 () ,并验证 <PackageID>。 PkgxferMgr 复制的 TZ 文件。

PullDP 4404 (0x1134) CPullDPService::LoadJobsFromXML for P010000F.3
PullDP 4404 (0x1134) - P010000F.3 - XML 有 1 个内容作业。
PullDP 4404 (0x1134) CPullDPPkgContJob::LoadContentJobFromXML () :Set JobState = NotStarted
PullDP 4404 (0x1134) - P010000F.3 - 已从 XML 加载内容作业 {C10457F9-DE3A-4B45-878C-345919AFF97E} 内容Content_3c9813ba-d7ab-4963-929c-36f90f479613.1...
PullDP 4404 (0x1134) CPullDPPkgJob::LoadJobFromXML () 已成功加载包P010000F.3 的作业,有 1 个内容作业。 ...
PullDP 4404 (0x1134) 已成功验证内容信息哈希 E:\SMS_DP$\P010000F.tz :3ED23B9869F7E10E19439F11341405FF76E22022E56468DCF211475899BD2914
PullDP 4404 (0x1134) CPullDPService::ExecuteJobs () 。 1 个要完成的作业

步骤 9:拉取 DP () 创建内容作业,以下载与包关联的内容

PullDP 4404 (0x1134) P010000F.3 开始下载有 1 个内容作业。
PullDP 3812 (0xee4) 内容作业 {C10457F9-DE3A-4B45-878C-345919AFF97E} 正在运行。
PullDP 3812 (0xee4) ContentExecuteJob {C10457F9-DE3A-4B45-878C-345919AFF97E} (状态: 1-包P010000F.3 内容的 NotStarted) Content_3c9813ba-d7ab-4963-929c-36f90f479613.1。

在上面的示例中,作业 {C10457F9-DE3A-4B45-878C-345919AFF97E} 与内容 Content_3c9813ba-d7ab-4963-929c-36f90f479613.1 相关联。 对于具有多个内容项的包,你将看到 (作业数,该作业数具有与包关联的唯一 ID) 。

PullDP 1320 (0x528) P010000A.2 开始下载有 2 个内容作业。
PullDP 5012 (0x1394) ContentExecuteJob {55692006-DFE8-4357-86D9-9839C8BF79CF} (状态: 1-NotStarted) 包P010000A.2 内容 2484568c-7aba-44ae-8557-05b61d62e70d。
PullDP 4112 (0x1010) ContentExecuteJob {7175CD81-CF67-48C9-AA22-010BF60B640E} (状态:1-NotStarted) 包P010000A.2 内容 c085b4ba-8e8f-42bf-8e2d-bc1067697722。

步骤 10: ((如果适用)) 拉取 DP 下载内容签名

(如果适用) 内容作业会创建数据传输服务 (DTS) 作业来下载包签名。 签名文件是从源分发点从 SMSSIG$ 虚拟目录下载的 TAR 文件,其中包含内容中每个文件的 RDC 签名。 RDC 签名用于确定文件内容是否已更改,以及是下载增量内容还是完整内容。 此步骤仅适用于已更改的内容,因此可能并不总是看到此步骤,而是看到步骤 11。

PullDP 3812 (0xee4) 已创建签名下载 DTS 作业 {3C962758-7ABE-40F2-A585-E5B59E378BEA} 包 P010000F.3,内容 ID Content_3c9813ba-d7ab-4963-929c-36f90f479613.1。 JobState = NotStarted
PullDP 3812 (0xee4) CPullDPPkgContJob::NotifyDeltaDownload。 JobState = [下载签名] Content_3c9813ba-d7ab-4963-929c-36f90f479613.1 包P010000F.3 内容作业 ID {C10457F9-DE3A-4B45-878C-345919AFF97E}
PullDP 752 (0x2f0) ContentExecuteJob {C10457F9-DE3A-4B45-878C-345919AFF97E} (状态: 4 下载包P010000F.3 内容的签名) Content_3c9813ba-d7ab-4963-929c-36f90f479613.1。

DataTransferService.log 显示 DTS 作业的进度,该作业创建 BITS 作业以下载签名文件,并在完成后发出通知:

创建<https://P01MP.CONTOSO.COM:443/SMS_DP_SMSSIG$> DataTransferService 3812 (0xee4) DTSJob {3C962758-7ABE-40F2-A585-E5B59E378BEA} 到“E:\SMS_DP$\P010000F\Content_3c9813ba-d7ab-4963-929c-36f90f479613.1”。
DataTransferService 3856 (0xf10) 开始下载 DTS 作业“{3C962758-7ABE-40F2-A585-E5B59E378BEA}”。
DataTransferService 3856 (0xf10) 用户“S-1-5-18”下为 DTS 作业“{43647077-986C-4727-A954-B327ECA50302}”启动 BITS 作业“{3C962758-7ABE-40F2-A585-E5B59E378BEA}”。
DataTransferService 3856 (0xf10) 添加到 BITS 作业:Content_3c9813ba-d7ab-4963-929c-36f90f479613.1.tar
DataTransferService 2528 (0x9e0) DTSJob {3C962758-7ABE-40F2-A585-E5B59E378BEA} 成功完成下载。
DataTransferService 3856 (0xf10) Execute 调用 DTS 作业“{3C962758-7ABE-40F2-A585-E5B59E378BEA}”。 当前状态:“RetrievedData”。
DataTransferService 3856 (0xf10) DTSJob {3C962758-7ABE-40F2-A585-E5B59E378BEA} 状态为“NotifiedComplete”。
DataTransferService 3856 (0xf10) DTS 作业 {3C962758-7ABE-40F2-A585-E5B59E378BEA} 已完成:

拉取 DP 接收完成通知,并处理签名以确定需要完整下载还是增量下载。

PullDP 4300 (0x10cc) 收到内容作业 {C10457F9-DE3A-4B45-878C-345919AFF97E} 的 DTS 消息,搜索 1 个包含此内容作业的任何活动作业。 DTS 作业为 {3C962758-7ABE-40F2-A585-E5B59E378BEA}
pullDP 4300 (0x10cc) DTS 成功收到P010000F.3 内容作业的消息 {C10457F9-DE3A-4B45-878C-345919AFF97E},状态为 0x0 :
PullDP 3856 (0xf10) ContentExecuteJob {C10457F9-DE3A-4B45-878C-345919AFF97E} (状态: 已下载包P010000F.3 内容Content_3c9813ba-d7ab-4963-929c-36f90f479613.1 的签名) 。

步骤 11:拉取 DP 创建 DataTransferService (DTS) 作业进行内容下载

拉取 DP 为内容创建下载作业。 在此示例中,拉取 DP 上不存在内容,因此会为包创建完全下载 DTS 作业。 DTS 作业可用于跟踪下一步DataTransferService.log中的下载过程:

PullDP 4300 (0x10cc) 收到内容作业 {C10457F9-DE3A-4B45-878C-345919AFF97E} 的 DTS 消息,搜索 1 个包含此内容作业的任何活动作业。 DTS 作业为 {3C962758-7ABE-40F2-A585-E5B59E378BEA}
pullDP 4300 (0x10cc) DTS 成功收到P010000F.3 内容作业的消息 {C10457F9-DE3A-4B45-878C-345919AFF97E},状态为 0x0 :
PullDP 3856 (0xf10) ContentExecuteJob {C10457F9-DE3A-4B45-878C-345919AFF97E} (状态: 已下载包P010000F.3 内容Content_3c9813ba-d7ab-4963-929c-36f90f479613.1 的签名) 。 ...
要下载的 PullDP 3856 (0xf10) 文件:ConfigMgrTools.msi
PullDP 3856 (0xf10) Content_3c9813ba-d7ab-4963-929c-36f90f479613.1:0 个文件已存在,1 个要下载的文件
PullDP 3856 (0xf10) 为包 P010000F.3 创建了 FullDownload (清单) DTS 作业 {78635652-3D12-4A26-A51B-D553934ECB54} content id Content_3c9813ba-d7ab-4963-929c-36f90f479613.1,内容作业 ID {C10457F9-DE3A-4B45-878C-345919AFF97E}。

步骤 12:DTS 创建一个 BITS 作业,用于下载内容并发送完成通知

DataTransferService.log 显示作业进度。 为拉取 DP 启用详细日志记录后, PullDP.log 也会显示有关下载进度的详细信息。

创建<https://P01MP.CONTOSO.COM:443/SMS_DP_SMSPKG$/Content_3c9813ba-d7ab-4963-929c-36f90f479613.1> DataTransferService 3856 (0xf10) DTSJob {78635652-3D12-4A26-A51B-D553934ECB54} E:\SMS_DP$\P010000F\Content_3c9813ba-d7ab-4963-929c-36f90f479613.1\3'。
DataTransferService 3812 (0xee4) 启动 BITS 作业“{04498466-5A8E-4A22-97F2-A66306143A20}” 用户“S-1-5-18”下的 DTS 作业“{78635652-3D12-4A26-A51B-D553934ECB54}”。
DataTransferService 3812 (0xee4) DTSJob {78635652-3D12-4A26-A51B-D553934ECB54} 状态为“正在下载数据”。
DataTransferService 752 (0x2f0) DTS 作业 {78635652-3D12-4A26-A51B-D553934ECB54} 已完成:

步骤 13:拉取 DP 将内容移动到“已下载”状态

DTS 作业完成后,将通知拉取 DP,并将内容移动到 “已下载” 状态:

PullDP 3812 (0xee4) 收到内容作业 {C10457F9-DE3A-4B45-878C-345919AFF97E} 的 DTS 消息,搜索 1 个包含此内容作业的任何活动作业。 DTS 作业为 {78635652-3D12-4A26-A51B-D553934ECB54}
对于 P010000F.3,内容作业 {C10457F9-DE3A-4B45-878C-345919AFF97E},pullDP 3812 (0xee4) DTS 成功收到消息,状态为0x0:
PullDP 3856 (0xf10) ContentExecuteJob {C10457F9-DE3A-4B45-878C-345919AFF97E} (状态: 9 下载包) P010000F.3 内容Content_3c9813ba-d7ab-4963-929c-36f90f479613.1。

步骤 14:将内容移动到内容库,并将状态移动到“成功”

成功 下载内容后,拉取 DP,然后将内容移动到内容库 (也称为单实例存储) 。 将内容移动到内容库后,内容将移动到 SIApplied 状态,后跟 “成功” 状态。

PullDP 3856 (0xf10) CPullDPPkgContJob::ApplySingleInstancing () : JobState = Downloaded
PullDP 3856 (0xf10) CPullDPPkgContJob::NotifySIApplied () 。 JobState = SIApplied
PullDP 3812 (0xee4) 内容作业 {C10457F9-DE3A-4B45-878C-345919AFF97E} 正在运行。
PullDP 3812 (0xee4) ContentExecuteJob {C10457F9-DE3A-4B45-878C-345919AFF97E} (状态: 13 包P010000F.3 内容Content_3c9813ba-d7ab-4963-929c-36f90f479613.1 的 SIApplied) 。
...
PullDP 3812 (0xee4) CPullDPPkgContJob::NotifySucceededed () 。 包P010000F.3 的内容作业 {C10457F9-DE3A-4B45-878C-345919AFF97E}和内容Content_3c9813ba-d7ab-4963-929c-36f90f479613.1 已成功完成。 JobState = Succeeded
PullDP 3812 (0xee4) 通知包P010000F.3 的内容作业 {C10457F9-DE3A-4B45-878C-345919AFF97E}已完成。

将每个内容项添加到内容库后,SMSDPProv.log也会收到通知并报告以下内容:

4688 (0x1250) 包“P010000F”的内容“Content_3c9813ba-d7ab-4963-929c-36f90f479613.1”已成功添加到内容库

请注意,可能有多个内容项与单个包相关联, (例如,具有多个部署类型或软件更新包) 的应用程序。 对于与包关联的每个内容,都会为内容下载创建 DTS 作业,并在成功完成后将内容移动到内容库, (“成功 ”状态) 。 因此,你可能会在PullDP.log中看到包的多个内容项移动到 “成功” 状态 但如果包中的其他内容项仍在下载,则整体包状态可能仍保持“ 正在进行 ”状态。

步骤 15:下载所有内容后,包将变为“成功”状态

在包的所有内容作业都成功完成并应用于内容库后,拉取 DP 会将包移动到 “成功” 状态。

PullDP 3812 (0xee4) P010000F.3 的所有 1 个内容作业已完成,通知此拉取 dp 作业成功。
PullDP 3812 (0xee4) P010000F.3 已成功完成,将清除存储的内容作业状态。

步骤 16:拉取 DP 将状态消息发送到管理点 (MP)

下载完成后,状态消息将发送到管理点, 状态 ID 为 1 ,指示 成功

PullDP 3812 (0xee4) 报告包“P010000F.3”0x00000001 (1) 到 MP 的状态消息
PullDP 3812 (0xee4) 请求成功。
PullDP 3812 (0xee4) CPullDPResponse::ReportPackageState 返回值0x00000000。

启用详细日志记录和调试日志记录后,可以看到整个消息正文:

PullDP 3812 (0xee4) 发送报告
PullDP 3812 (0xee4) <ReportHeader><><标识><机><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.00000+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>

在内容下载期间,会向 MP 发送包含下载百分比的中间状态消息。 若要查看所有可用的状态 ID,请参阅 内容分发的高级故障排除提示

步骤 17:拉取 DP 清除 WMI 中的内容作业状态

发送 成功 状态消息后,拉取 DP 会清除包的作业状态。

PullDP 3812 (0xee4) 清除包P010000F.3 中所有 1 个内容作业的内容作业状态。
PullDP 3812 (0xee4) CPullDPService::ClearCompletedJobs () ,删除 1 个已完成的作业。
PullDP 3812 (0xee4) 从作业数组和 WMI 中删除包P010000F.3 的作业。
PullDP 3812 (0xee4) 清除包P010000F.3 中所有 1 个内容作业的内容作业状态。

步骤 18:MP 上的MP_Relay终结点接收状态消息并将其移动到站点服务器

MP_Relay 管理点上的 endpoint 处理状态消息并将状态消息 SMX 文件路由到 auth\statesys.box\incoming 站点服务器上的目录。 如果 MP 位于站点服务器上, (示例) ,则直接将其发送到 inboxes\auth\statesys.box\incoming 目录。 如果 MP 是远程的,它将它移动到 \mp\outboxes\StateMsg.box MP 上的目录,MP 文件调度管理器 (MPFDM) 将文件移动到 inboxes\auth\statesys.box\incoming 站点服务器上的目录。

MP_RelayEndpoint 25912 (0x6538) Mp 消息处理程序:启动中继的消息处理。 -----------------------
MP_RelayEndpoint 25912 (0x6538) Mp 消息处理程序:FileType=SMX
MP_RelayEndpoint 25912 (0x6538) 消息正文 :
<Report><ReportHeader><Identification><Machine><ClientInstalled>0</ClientInstalled><ClientType>1</ClientType><Unknown>0</Unknown><ClientID IDType=“0” IDFlag=“1”>925b0ab0-247b-466b-be 0f-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<>/><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>
</报告>
MP_RelayEndpoint 25912 (0x6538) Inv-Relay 任务:处理消息正文
MP_RelayEndpoint 25912 (0x6538) 中继:发件箱 dir: E:\ConfigMgr\inboxes\auth\statesys.box\incoming

请注意,应在 MP 上启用详细日志记录和调试日志记录,以便在 MP 上查看上述日志条目。 如果没有详细日志和调试日志, MP_Relay.log 将只记录“”。

步骤 19:站点服务器上的状态系统组件将状态消息处理到数据库中

状态消息 SMX 文件到达 StateSys.box\incoming 目录后,站点服务器上的状态系统组件将处理该消息。 所有状态消息都通过调用 spProcessReport 存储过程进行处理。 对于拉取 DP 状态消息, spProcessReport 调用 spProcessPullDPMessage 它使用状态消息详细信息更新 PullDPResponse 表。

SMS_STATE_SYSTEM 23544 (0x5bf8) CMessageProcessor - 处理文件:N_6RB4OA3A。SMX
SMS_STATE_SYSTEM 23544 (0x5bf8) CMessageProcessor - DB exec dbo.spProcessStateReport N'?<Report><ReportHeader><Identification><Machine><ClientInstalled>0</ClientInstalled><ClientType>1</ClientType><Unknown>0</Unknown><ClientID IDType=“0” IDFlag=“1”>925b0ab0-247b-466b-be 0f-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>><[“Display=\\P01PDP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=P01”]\\P01PDP1.CONTOSO.COM\</Param><Param>{04AD1BB3-5E54-457A-9873-DFB2E8035090}</Param><></><UserParameters></StateMessage></ReportBody>~~</Report>~'

请注意, 除非启用了StateSys.log 的详细日志记录,否则 StateSys.log 不会记录消息正文。 若要为 StateSys.log启用详细日志记录,请参阅 启用详细日志记录

下面是处理拉取 DP 状态消息的存储过程的摘录 spProcessReport

else if @TopicType=902 -- Pull Distribution Point  
        exec @Ret=spProcessPullDPMessage @SenderID=@SenderID, @MessageTime=@tmMessageTime, @PkgID=@TopicID, @PkgVersion=@MessageSerialNumber, @StateID=@StateID, @P1=@P1, @P2=@P2, @P3=@P3, @P4=@P4, @P5=@P5, @Error=@Error OUTPUT  

步骤 20:SMSDBMON 通知 DistMgr 更新状态

更新表后 PullDPResponse ,SMSDBMON 会检测表中的更改,并删除 要处理的 DistMgr 的 PUL 文件,其中文件的名称标识已插入/修改的行。

SMS_DATABASE_NOTIFICATION_MONITOR 29748 (0x7434) RCV:INSERT on PullDPResponse for PullDPResponse_UpdIns [72057594037928008 ][145014]
SMS_DATABASE_NOTIFICATION_MONITOR 29748 (0x7434) SND:已删除 E:\ConfigMgr\inboxes\distmgr.box\incoming\72057594037928008.PUL [145014]

步骤 21:DistMgr 更新分发状态

DistMgr 处理 。PUL 文件,并根据文件名从 PullDPResponse 表中检索行,并更新包状态。 处理响应后,DistMgr 将从 PullDPResponse 表中删除已处理的行。

SMS_DISTRIBUTION_MANAGER 32876 (0x806c) SQL>>>select s.ID、s.PkgServer、s.SiteCode、p.StoredPkgVersion、s.Status、r.PkgVersion、r.ActionState、r.ActionData、 p.PkgFlags, p.ShareType, CONVERT (VARCHAR (64) , r.MessageTime, 127) AS MessageTime from PullDPResponse r join PkgStatus s on r.PkgStatusID = s.PKID AND r.PkgStatusID = 72057594037928008 join SMSPackages p on s.ID = p.PkgID
SMS_DISTRIBUTION_MANAGER 32876 (0x806c) ~Processing PullDP 响应 P01 - [“Display=\\P01PDP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=P01”]\\P01PDP1.CONTOSO.COM\
SMS_DISTRIBUTION_MANAGER 32876 (0x806c) 包P010000F,版本 3 (3) ,ActionState 1,PkgStatus 0,ActionData =
SMS_DISTRIBUTION_MANAGER 32876 (0x806c) ~已成功更新 [“Display=\P01PDP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=P01”]\\P01PDP1.CONTOSO.COM\ 的包服务器状态P010000F,状态 3
SMS_DISTRIBUTION_MANAGER 32876 (0x806c) SQL>>>DELETE FROM PullDPResponse WHERE PkgStatusID = 72057594037928008 AND MessageTime = '2019-01-07T20:06:18'
SMS_DISTRIBUTION_MANAGER 32876 (0x806c) ~已成功处理 PullDP 响应文件 E:\ConfigMgr\inboxes\distmgr.box\INCOMING\72057594037928008.PUL

步骤 22:数据库复制将状态更改复制到其他站点

在数据库中更新包状态后,将通过数据库复制将其复制到其他站点。

更新包

更新包时,包内容将重新传递到包分发到的所有分发点。 这是通过递增包源版本来完成的,并且仅将内容更改发送到 DP,而不是再次发送所有内容。

以下步骤概述了更新包时发生的事件流。 在此示例中,我们将查看在主站点上创建的包的包更新操作,并重点介绍特定于包更新操作的进程更改。

步骤 1:管理控制台针对 SMS_Package SMS 提供程序命名空间中的 WMI 类执行 RefreshPkgSource 方法

管理员从控制台更新包后,管理控制台会调用 RefreshPkgSource 类的 SMS_Package 方法来更新包。 SMSProv.log 显示以下内容:

SMS 提供程序 4716 (0x126c) 上下文:SMSAppName=Configuration Manager管理员控制台~
SMS 提供程序 4716 (0x126c) ExecMethodAsync: SMS_Package.PackageID=“<PackageID>”::RefreshPkgSource ~
SMS 提供程序 4716 (0x126c) CExtProviderClassObject::D oExecuteMethod RefreshPkgSource~
SMS 提供程序 4716 (0x126c) 审核:用户 CONTOSO\管理员调用类SMS_Package实例的已审核方法。~

调用此方法时,SMS 提供程序将更新 SMSPackages 为将 Action 设置为 1 (UPDATE) 并在表中插入一行 PkgNotification

update SMSPackages set Source = N'\\PS1SITE\SOURCE\Packages\200MB_1', StoredPkgVersion = 1, UpdateMask = 32, UpdateMaskEx = 8388608, Action = 1 where PkgID = N'PackageID'
insert PkgNotification (PkgID, Priority, Type, TimeKey) values (N'PackageID', 2, 1, GetDate())  

步骤 2:SMSDBMON 通知 DistMgr 处理包

SMSDBMON 检测到表中的更改,该更改PkgNotification导致它删除 <PackageID>。中的 PKN 文件,指示 DistMgr 处理包:DistMgr.box

SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) RCV: INSERT on PkgNotification for PkgNotify_Add [<PackageID>][1036610]
SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) SND:已删除 E:\ConfigMgr\inboxes\distmgr.box\<PackageID>。PKN [1036610]

步骤 3:DistMgr 在收到 PKN 文件后唤醒以处理包

  1. main DistMgr 线程启动包处理线程。

    main DistMgr 线程将包添加到包处理队列,并创建包处理线程。

    SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) 找到包“PackageID>”<的包属性更新通知
    SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) 将包“PackageID>”<添加到包处理队列。
    SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) ~当前使用 0(共 3 个允许的包处理线程)。
    SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) ~包“PackageID>”<的已启动包处理线程,线程 ID = 0x1690 (5776)

  2. 包处理线程创建包快照,将内容写入内容库并递增包版本。

    在这种情况下,包处理线程 (线程 ID 5776,) 开始处理包并创建快照包。 创建包快照后,此线程还会将包内容写入站点服务器上的内容库:

    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~处理包 <PackageID> (SourceVersion:1;StoredVersion:1)
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) 开始更新包 <PackageID>...
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) 从源 \\PS1SITE\SOURCE\Packages\200MB_1 获取包 PackageID> 的包<快照
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) 包 <PackageID>(版本 2)的大小为 204800 KBytes
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) 编写 PackageID 的 <包定义>
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~已成功创建包 <PackageID> 版本 2 的 RDC 签名
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) 为算法 32780 创建哈希
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) 算法 32780 的哈希为 <HashString>
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) 算法 32780 的 RDC 签名哈希为 79A56464F7BAC44B3D183D5EFC1160E51F95A34FECA492AAD73BC73C8B6DBA38
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) STATMSG: ID=2376 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_DISTRIBUTION_MANAGER” SYS=PS1SITE。CONTOSO.COM SITE=PS1 PID=5428 TID=5776 GMTDATE=Tue May 17 18:31:23.782 2016 ISTR0=“PS100039” ISTR1=“” ISTR2=“” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“” ISTR7=“” ISTR8=“” ISTR9=“” NUMATTRS=1 AID0=400 AVAL0=“PS100039”
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~包PS100039源已更改或需要刷新包源
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~将这些内容添加到包PS100039版本 2。
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~包操作为 1,更新掩码为 32,UpdateMaskEx 为 0。
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~使用驱动器 E 存储压缩包。
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~已成功创建/更新包PS100039。
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) STATMSG: ID=2311 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_DISTRIBUTION_MANAGER” SYS=PS1SITE。CONTOSO.COM SITE=PS1 PID=5428 TID=5776 GMTDATE=5月17日星期二 18:31:23.982 2016 ISTR0=“PS100039” ISTR1=“” ISTR2=“” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“” ISTR7=“” ISTR8=“” ISTR9=“” NUMATTRS=1 AID0=400 AVAL0=“PS100039”

  3. 包处理线程进程启动 DP 线程来处理包操作,然后等待它们退出。

    包处理线程处理包操作以更新包,这涉及到更新分发此包的所有 DP 上的包。 由于有包操作要处理,包处理线程会创建 DP 线程来执行这些操作,并等待 DP 线程退出,然后再继续操作。

    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) 开始 PS100039更新服务器 [“Display=\\PS1SITE.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1SITE.CONTOSO.COM\...
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~已创建 DP 处理线程 920 ,用于 PS100039在服务器 [“Display=\\PS1SITE.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1SITE.CONTOSO.COM\
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) 开始 PS100039更新服务器 [“Display=\\PS1SYS.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1SYS.CONTOSO.COM\...
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~已创建 DP 处理线程 2060 ,用于 PS100039在服务器 [“Display=\\PS1SYS.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1SYS.CONTOSO.COM\
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) PS100039 开始更新服务器 [“Display=\\PS1DP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP1.CONTOSO.COM\...
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~已创建 DP 处理线程 6076 ,用于 PS100039在服务器 [“Display=\\PS1DP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP1.CONTOSO.COM\
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) 开始 PS100039更新服务器 [“Display=\\PS1DP2.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP2.CONTOSO.COM\...
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~已创建 DP 处理线程 5948 ,用于 PS100039在服务器 [“Display=\\PS1DP2.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP2.CONTOSO.COM\
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~等待包PS100039处理线程完成所有 DP 线程。

  4. DP 线程启动并创建 PkgXferMgr 作业以将内容传输到 DP,然后退出。

    DP 线程开始创建 PkgXferMgr 作业,以更新 DP 上的包。 此时,有四个 DP 线程用于四个不同的 DPS:

    SMS_DISTRIBUTION_MANAGER 5948 (0x173c) DP 线程:尝试在 DP 上添加或更新包PS100039 [“Display=\PS1DP2.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP2.CONTOSO.COM\
    SMS_DISTRIBUTION_MANAGER 5948 (0x173c) ~已创建包传输作业,以便将包PS100039发送到分发点 [“Display=\PS1DP2.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP2.CONTOSO.COM\。
    SMS_DISTRIBUTION_MANAGER 5948 (0x173c) 返回前执行清理。
    SMS_DISTRIBUTION_MANAGER 5948 (0x173c) 取消与 \\PS1DP2.CONTOSO.COM\ADMIN$ 的网络连接。

    当 DP 线程创建 PkgXferMgr 作业时,它会通过在表中插入一行 DistributionJobs 来实现。

    insert into DistributionJobs (DPID,PkgID,PackageVersion,State,CreationTime,Action) values(35,N'PS100039',2,0,N'2016/05/17 14:31:35',1)
    
  5. ((如果适用)) 包处理线程会创建一个微型作业,将包的压缩副本发送到其他站点。

    在所有 DP 线程完成工作后,包处理线程会创建一个微型作业,以将包的压缩副本发送到其他站点(如果适用)。 此微型作业由计划程序处理,以创建发送方的发送请求,以将包的压缩副本传输到目标站点:

    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~所有 DP 线程都已完成包PS100039处理线程。
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~包PS100039没有首选发件人。
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) STATMSG: ID=2333 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_DISTRIBUTION_MANAGER” SYS=PS1SITE。CONTOSO.COM SITE=PS1 PID=5428 TID=5776 GMTDATE=5月17日星期二 18:31:44.977 2016 ISTR0=“PS100039” ISTR1=“PS2” ISTR2=“” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“” ISTR7=“” ISTR8=“” ISTR9=“” NUMATTRS=1 AID0=400 AVAL0=“PS100039” ...
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~需要将包的压缩包PS100039发送到站点 PS2
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~将包PS100039的副本发送到站点 PS2
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~使用驱动器 E 存储压缩包。
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~将 CMiniJob 传输根目录设置为 E:\SMSPKG\PS100039。DLT.1.2
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~创建了用于将包PS100039的压缩副本发送到站点 PS2 的微型作业。 传输根 = E:\SMSPKG\PS100039。DLT.1.2。 ...
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~需要将包的压缩包PS100039发送到站点 SS1
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~将包的副本PS100039发送到站点 SS1
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~使用驱动器 E 存储压缩包。
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~将 CMiniJob 传输根目录设置为 E:\SMSPKG\PS100039。DLT.1.2
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~创建了用于将包PS100039的压缩副本发送到站点 SS1 的微型作业。 传输根 = E:\SMSPKG\PS100039。DLT.1.2。

  6. 包处理线程在处理包后退出:

    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) 包PS100039是新的或已更改的,可复制到所有适用的站点。
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~CDistributionSrcSQL::UpdateAvailableVersion PackageID=PS100039,Version=2,Status=2301
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~StoredPkgVersion (包PS100039 2) 。 数据库中的 StoredPkgVersion 为 2。
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~SourceVersion (包PS100039 2) 。 数据库中的 SourceVersion 为 2。
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) STATMSG: ID=2301 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_DISTRIBUTION_MANAGER” SYS=PS1SITE。CONTOSO.COM SITE=PS1 PID=5428 TID=5776 GMTDATE=5月17日星期二 18:31:45.415 2016 ISTR0=“Dummy2” ISTR1=“PS100039” ISTR2=“” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“” ISTR7=“” ISTR8=“” ISTR9=“” NUMATTRS=1 AID0=400 AVAL0=“PS100039”
    SMS_DISTRIBUTION_MANAGER 5776 (0x1690) 包PS100039的退出包处理线程。

步骤 4:SMSDBMON 通知 PkgXferMgr 处理作业

SMSDBMON 检测表中的 DistributionJobs 更改,并在 中删除 PkgTransferMgr.box PKN 文件,以指示 PkgXferMgr 处理作业:

SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) RCV:适用于DistributionJob_Creation的 DistributionJobs 上的更新 [PS100039 ][1036623]
SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) SND:已删除 E:\ConfigMgr\inboxes\PkgTransferMgr.box\PS100039。PKN [1036623]

步骤 5:PkgXferMgr 唤醒以处理作业

对于标准 DP,发送线程将内容复制到 DP,其余进程与 将包分发到标准 DP 的步骤 6 中所述的过程相同。

对于拉取 DP,请求 DP 发送线程将通知发送到请求 DP 以执行内容下载。 然后,拉取 DP 从源 DP 下载内容,其余过程与 分发包以拉取 DP 的步骤 6 中所述的过程相同。

步骤 6:通过 DRS 将包状态更改复制到其他站点

在数据库中更新包状态后,将通过数据库复制将其复制到其他站点。

重新分发包

将包重新分发到 DP 时,即使 DP 上的内容库中已存在该内容,所有包内容文件也会重新复制到 DP。

以下步骤概述了将包重新分发到 DP 时发生的事件流。 在此示例中,主站点服务器已有包的压缩副本。 此过程与 将包分发到标准 DP分发包以拉取 DP 中概述的过程相同,因此此处仅查看相关更改的详细日志片段。

步骤 1:管理员将包重新分发到 DP

步骤 2:如果管理员从其他主站点或管理中心站点重新分发包,DRS 会将更改复制到相关站点

步骤 3:SMSDBMON 通知 DistMgr 处理包

步骤 4:DistMgr 唤醒以处理包

  1. main DistMgr 线程启动包处理线程。

  2. 包处理线程创建 DP 线程来处理包操作,并等待它们退出。

  3. DP 线程创建 PkgXferMgr 作业,以将包添加到 DP,然后退出。

    DP 线程开始将包添加到 DP。 DP 线程不会直接将包内容复制到 DP,而是为包传输管理器创建一个作业, (PkgXferMgr) 指示它将包内容复制到 DP。 以下日志条目显示了创建 PkgXferMgr 作业的 DP 线程。 创建作业后,DP 线程的工作完成,DP 线程退出。

    SMS_DISTRIBUTION_MANAGER 3792 (0xed0) DP 线程:尝试在 DP 上 [<>“Display=\\PS1DP2.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP2.CONTOSO.COM\
    SMS_DISTRIBUTION_MANAGER 3792 (0xed0) ~已创建包传输作业,以便将包 <PackageID> 发送到分发点 [“Display=\\PS1DP2.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP2.CONTOSO.COM\。
    SMS_DISTRIBUTION_MANAGER 3792 (0xed0) STATMSG: ID=2357 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_DISTRIBUTION_MANAGER” SYS=PS1SITE。CONTOSO.COM SITE=PS1 PID=5428 TID=3792 GMTDATE=Mon May 16 19:26:58.642 2016 ISTR0=“<PackageID>” ISTR1=“[”Display=\\PS1DP2.CONTOSO.COM\“]MSWNET:[”SMS_SITE=PS1“]\\PS1DP2.CONTOSO.COM\” ISTR2=“” ISTR 3=“”“ ISTR4=”“ ISTR5=”“ ISTR6=”“ ISTR7=”“ ISTR8=”“ ISTR9=”“ NUMATTRS=2 AID0=400 AVAL0=”<PackageID>“ AID1=404 AVAL1=”[“Display=\\PS1DP2.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP2.CONTOSO.COM\”

    当 DP 线程创建 PkgXferMgr 作业时,它会通过在表中插入一行 DistributionJobs 来实现。 对于重新分发包, Action 设置为 2

    insert into DistributionJobs (DPID,PkgID,PackageVersion,State,CreationTime,Action) values(32,N'CS100026',1,0,N'2016/05/16 16:03:49',2)
    
  4. 包处理线程在所有 DP 线程退出后退出。

步骤 5:SMSDBMON 通知 PkgXferMgr 处理作业

步骤 6:PkgXferMgr 唤醒以处理作业

  1. main PkgXferMgr 线程创建发送线程。

  2. 发送线程或拉取 DP 发送线程处理作业。

    标准 DP:

    发送线程开始将包内容复制到 DP。 此过程涉及将包中的所有文件复制到目录中的 SMS_DP$ DP。 由于包已重新分发,PkgXferMgr 显示 Redistribute 设置为 1,这意味着所有文件都将重新复制到 DP,即使它们已存在于 DP 上的内容库中也是如此。

    SMS_PACKAGE_TRANSFER_MANAGER 5272 (0x1498) 从作业 583 开始发送线程,包: <PackageID>,版本:1,优先级:2,服务器:PS1DP1.CONTOSO.COM,DPPriority: 200
    SMS_PACKAGE_TRANSFER_MANAGER 5272 (0x1498) pkg <PackageID> 版本 1、状态 0 和分发点 [“Display=\PS1DP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP1.CONTOSO.COM\~
    SMS_PACKAGE_TRANSFER_MANAGER 5272 (0x1498) 执行 preactions 包 <PackageID>、分发点 PS1DP1.CONTOSO.COM
    SMS_PACKAGE_TRANSFER_MANAGER 5272 (0x1498) 发送包包ID> 的旧内容 <PackageID.1 <>
    SMS_PACKAGE_TRANSFER_MANAGER 5272 (0x1498) Redistribute=1,Related=
    SMS_PACKAGE_TRANSFER_MANAGER 5272 (0x1498) 发送文件“\\PS1DP1.CONTOSO.COM\SMS_DP$\73E055438D4731F41DB6C3BCB90919F60000226B330C73942454A174D7E26533-PackageID.1.temp<>”
    SMS_PACKAGE_TRANSFER_MANAGER 5272 (0x1498) ~发送已启动 [E:\SCCMContentLib\FileLib\73E0\73E055438D4731F41DB6C3BCB90919F60000226B330C73942454A174D7E26533]
    SMS_PACKAGE_TRANSFER_MANAGER 5272 (0x1498) ~尝试将 983040 字节写入 \\PS1DP1.CONTOSO.COM\SMS_DP$\73E055438D4731F41DB6C3BCB90919F60000226B330C73942454A174D7E26533-PackageID.1.temp<> 位置208732160
    SMS_PACKAGE_TRANSFER_MANAGER 5272 (0x1498) ~将 983040 字节写入 \\PS1DP1.CONTOSO.COM\SMS_DP$\73E055438D4731F41DB6C3BCB 90919F60000226B330C73942454A174D7E26533-PackageID.1.temp<> 在 344 时钟周期内208732160位置
    SMS_PACKAGE_TRANSFER_MANAGER 5272 (0x1498) ~发送已完成 [E:\SCCMContentLib\FileLib\73E0\73E0\73E055438D4731F41DB6C3BCB90919F60000226B330C73942454A174D7E26533]
    SMS_PACKAGE_TRANSFER_MANAGER 5272 (0x1498) 已完成远程 DP PS1DP1.CONTOSO.COM 的后期操作
    SMS_PACKAGE_TRANSFER_MANAGER 5272 (0x1498) ~发送已完成
    SMS_PACKAGE_TRANSFER_MANAGER 5272 (0x1498) ~已完成将 SWD 包 <PackageID> 版本 1 发送到分发点 PS1DP1.CONTOSO.COM
    SMS_PACKAGE_TRANSFER_MANAGER 5272 (0x1498) STATMSG: ID=8200 SEV=I LEV=M SOURCE=“SMS Server” COMP=“SMS_PACKAGE_TRANSFER_MANAGER” SYS=PS1SITE。CONTOSO.COM SITE=PS1 PID=5428 TID=5272 GMTDATE=Mon May 16 20:06:36.827 2016 ISTR0=“<PackageID>” ISTR1=“1” ISTR2=“PS1DP1.CONTOSO.COM” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“” ISTR7=“” ISTR8=“” ISTR9=“” NUMATTRS=2 AID0=400 AVAL0=“<PackageID>” AID1=410 AVAL1=“1”

    拉取 DP:

    拉取 DP 发送线程向拉取 DP 发送通知以开始下载内容。 由于包已重新分发,因此生成的通知 XML 显示 Action 设置为 redist,这意味着拉取 DP 将重新下载所有文件,即使这些文件已存在于拉取 DP 上的内容库中也是如此。

    下面是生成通知 XML 查询的示例查询的外观,显示 操作 自内容重新分发以来是 重修 的:

    SELECT [dbo].[fnGetPullDPXMLNotification]('P010000F', 3, 'P01PDP1.CONTOSO.COM', 2, 'redist', 1, 'O:SYG:BAD:P(A;;FA;;;BA)(A;OICIIO;GA;;;BA)(A;;0x1200a9;;;BU)(A;OICIIO;GXGR;;;BU)(A;;FA;;;BA)(A;OICIIO;GA;;;BA)', 0, 32780, '3ED23B9869F7E10E19439F11341405FF76E22022E56468DCF211475899BD2914', '') AS Notification
    

    收到重新分发操作的通知时, PullDP.log 将显示所有内容都将重新下载,即使部分/所有内容可能存在于内容库中。

    PullDP 3676 (0xe5c) Content_3c9813ba-d7ab-4963-929c-36f90f479613.1:重新分发/重新下载所有文件

    完成此操作后,剩余过程类似于 分发包以拉取 DP 的步骤 6 中所述的过程。

  3. 发送线程将状态消息发送到 DistMgr。

步骤 7:SMS DP 提供程序将内容添加到内容库

步骤 8:DistMgr 处理 PkgXferMgr 发送的状态消息

步骤 9:通过 DRS 将包状态更改复制到其他站点