内容分发中的包操作
本文可帮助你了解内容分发中的包操作。
原始产品版本: Configuration Manager Current Branch、Microsoft System Center 2012 Configuration Manager、Microsoft System Center 2012 R2 Configuration Manager
简介
内容分发中的包操作分为以下各项:
分发
与内容分发相关的第一个主要操作是“分发”操作。 这是指包的初始分发到分发点。 这是由 Configuration Manager 控制台中的“分发内容”向导触发的。 这将将包中的所有文件传输到目标分发点,不包括已存在于 DP 的内容库中作为另一个包的一部分的文件。 如果包包含分发点上的内容库中已有的任何文件,则这些文件在多个包之间共享。
更新
第二个主要操作是更新操作。 这通常在包已更改且分发包的所有分发点都需要更新的内容时使用。 此操作在 控制台中使用“更新分发点 ”操作触发。 这会将更改的文件传输到所有分发点。 不会传输未更改的文件。 如果文件已从更新版本的包中删除,则会从分发点上的包中删除该文件(只要没有共享该文件的其他包位于 DP 上)。
分配
第三个主要操作是在 Configuration Manager 控制台中使用 Redistribute 触发 的 Redistribute 操作。 这会将整个内容传输到特定的分发点。 即使文件已存在于分发点上的内容库中,也会传输和覆盖这些文件。 Redistribute 操作的主要用途是更正内容库中可能存在的任何不一致。
创建包
以下步骤说明了从管理员控制台创建新包(尚未分发到任何 DP)时的事件流:
步骤 1:管理控制台创建类的 SMS_PackageWMI
实例
管理员在控制台中创建包后,管理控制台会在新创建的包的 SMS 提供程序命名空间中创建 WMI 类的实例 SMS_Package
。 SMSProv.log显示以下内容:
SMS 提供程序 4680 (0x1248) CExtProviderClassObject::D oPutInstanceInstance~
SMS 提供程序 4680 (0x1248) 审核:用户 CONTOSO\Admin 创建了类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)
插入行后,视图上的触发器将插入行 SMSPackages_G
和 SMS_Packages_L
表中。 这反过来会导致表上的 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.box
,指示 DistMgr 处理包:
SMS_DATABASE_NOTIFICATION_MONITOR 3240 (0xca8) RCV:PkgNotify_Add [<PackageID>][850902] 的 PkgNotification 上的 INSERT
SMS_DATABASE_NOTIFICATION_MONITOR 3240 (0xca8) SND:已删除 E:\ConfigMgr\inboxes\distmgr.box\<PackageID>。PKN [850902]
步骤 3:DistMgr 处理包源站点上的包
DistMgr 在检测 PKN 文件 DistMgr.box
后处理包。 DistMgr 处理由多个线程执行。
主 DistMgr 线程创建包处理线程。
主 DistMgr 线程唤醒,将包添加到包处理队列,并创建包处理线程来处理包:
SMS_DISTRIBUTION_MANAGER 2624 (0xa40) 找到包属性更新了包“PackageID”的通知
SMS_DISTRIBUTION_MANAGER 2624 (0xa40) 向包处理队列添加包“PackageID”。
SMS_DISTRIBUTION_MANAGER 2624 (0xa40) ~当前使用 3 个允许的包处理线程中的 0 个。
SMS_DISTRIBUTION_MANAGER 2624 (0xa40) ~包“PackageID”的启动包处理线程,线程 ID = 0x16A8 (5800)包处理线程创建包快照并在内容库中写入内容。
包处理线程(在本例中为线程 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=“” ISTR12=“” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“” ISTR7=“” ISTR8=“” ISTR9=“” NUMATTRS=1 AID0=400 AVAL0=“<PackageID>”包处理线程将包复制到其他站点。
然后,包处理线程将包复制到层次结构中的其他站点。 包元数据信息通过数据库复制复制到其他站点,而包文件使用文件复制进行复制。 但是,仅当该站点中至少有一个 DP 添加到包时,才会将包文件发送到站点。 包文件在发送到另一个站点之前进行压缩。 在这种情况下,由于没有针对任何 DP,因此只会将包元数据复制到其他站点,但不会复制包文件。
SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) ~PackageID <> 没有首选发件人。
SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) 包 PackageID> 的程序<已被添加或删除,因此需要将其复制到所有子站点。
SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) 包 PackageID <> 是新的或已更改的,复制到所有适用的站点。
SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) ~CDistributionSrcSQL::UpdateAvailableVersion PackageID=<PackageID>, Version=1, Status=2301
SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) ~StoredPkgVersion (1) 包 <PackageID>。 数据库中的 StoredPkgVersion 为 1。
SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) ~PackageID> 的 <SourceVersion (1)。 数据库中的 SourceVersion 为 1。
SMS_DISTRIBUTION_MANAGER 5800 (0x16a8) ~将这些内容添加到包 <PackageID> 版本 1。包处理线程退出。
包处理线程在包处理完成后退出,并引发 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) ~包 PackageID> 的退出包<处理线程。
步骤 4:(如果适用)DRS 将包复制到其他站点
如果层次结构中还有其他站点,则通过数据库复制将包元数据信息复制到其他站点。 复制包信息后,将插入表中的一行 SMSPackages_G
,这会触发表中的 PkgNotification
插入。
步骤 5:(如果适用)接收站点上的 SMSDBMON 通过删除 <PackageID> 通知 DistMgr。PKN 文件
在接收站点上,SMSDBMON 检测到表中的更改PkgNotification
,导致它删除 <PackageID。>PKN 文件DistMgr.box
,指示 DistMgr 处理包:
SMS_DATABASE_NOTIFICATION_MONITOR 3120 (0xc30) RCV:PkgNotify_Add的 PkgNotification 上的 INSERT [<PackageID> ][1035019]
SMS_DATABASE_NOTIFICATION_MONITOR 3120 (0xc30) SND:已删除 E:\ConfigMgr\inboxes\distmgr.box\<PackageID>。PKN [1035019]
步骤 6:(如果适用) 接收站点上的 DistMgr 处理包
在接收站点上,收到后 。PKN 文件 DistMgr 唤醒以处理包。
主 DistMgr 线程创建包处理线程。
主 DistMgr 线程将包添加到包处理队列,并创建包处理线程:
SMS_DISTRIBUTION_MANAGER 3648 (0xe40) 找到包属性更新了包“PackageID>”<的通知
SMS_DISTRIBUTION_MANAGER 3648 (0xe40) 向包处理队列添加包“<PackageID>”。
SMS_DISTRIBUTION_MANAGER 3648 (0xe40) ~当前使用 3 个允许的包处理线程中的 0 个。
SMS_DISTRIBUTION_MANAGER 3648 (0xe40) ~包“PackageID>”<的启动包处理线程,线程 ID = 0x1378 (4984)包处理线程处理包。
在这种情况下,此线程没有任何作用,因为没有针对任何 DP。
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=“” ISTR1=“ ISTR2=”“ 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
packageID> 的 SMS_DISTRIBUTION_MANAGER 4984 (0x1378) ~StoredPkgVersion (0)。< 数据库中的 StoredPkgVersion 为 0。
SMS_DISTRIBUTION_MANAGER 4984 (0x1378) ~PackageID> 的 <SourceVersion (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) ~包 PackageID> 的退出包<处理线程。
跨站点将包分发到 DP
以下步骤概述了将包分发到主站点中的 DP 但相关主站点服务器不包含内容库中此包的副本时的事件流。 此包是在管理中心站点上创建的,因此,管理中心站点是包源站点:
在包源站点上
步骤 1:管理控制台通过对类调用 AddDistributionPoints
方法 SMS_PackageWMI
将 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\Admin 调用类SMS_Package实例的已审核方法。~
调用此方法时,SMS 提供程序在设置为 2(ADD)的情况下PkgServers
Action
插入一行。
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
PKN 文件DistMgr.box
,指示 DistMgr 处理包。
SMS_DATABASE_NOTIFICATION_MONITOR 4944 (0x1350) RCV:PkgNotify_Add的 PkgNotification 上的 INSERT [<PackageID> ][850967]
SMS_DATABASE_NOTIFICATION_MONITOR 4944 (0x1350) SND:已删除 E:\ConfigMgr\inboxes\distmgr.box\<PackageID>。PKN [850967]
步骤 3:DistMgr 在收到 PKN 文件后唤醒以处理包
主 DistMgr 线程创建包处理线程。
主 DistMgr 线程将包添加到包处理队列,并创建包处理线程。
SMS_DISTRIBUTION_MANAGER 2496 (0x9c0) 将包“<PackageID>”添加到包处理队列。
SMS_DISTRIBUTION_MANAGER 2496 (0x9c0) ~当前使用 3 个允许的包处理线程中的 0 个。
SMS_DISTRIBUTION_MANAGER 2496 (0x9c0) ~包“PackageID>”<的启动包处理线程,线程 ID = 0x1164 (4452)包处理线程处理包操作。
包处理线程处理包操作以添加/更新/从 DP 中删除包。 在这种情况下,包源站点是管理中心站点,并且没有要处理的包操作,因为管理中心站点不包含任何 DP。 在有要处理的包操作的站点上,包处理线程会创建 DP 线程来执行这些操作,并等待 DP 线程退出,然后再转到步骤 3-3。
SMS_DISTRIBUTION_MANAGER 4452 (0x1164) ~处理包 <PackageID> (SourceVersion:1;StoredVersion:1)
SMS_DISTRIBUTION_MANAGER 4452 (0x1164) 没有为 PackageID <>指定的操作,但是此包可能存在包服务器更改。包处理线程创建一个小型作业,用于将包的压缩副本发送到目标站点。
此微型作业由计划程序处理,以创建发送方将包的压缩副本传输到目标站点的发送请求:
SMS_DISTRIBUTION_MANAGER 4452 (0x1164) ~PackageID <> 没有首选发件人。
SMS_DISTRIBUTION_MANAGER 4452 (0x1164) ~需要将 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> 上的递增 ref 计数。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包处理线程在处理包后退出:
SMS_DISTRIBUTION_MANAGER包 PackageID> 的 SMS_DISTRIBUTION_MANAGER 4452 (0x1164) ~StoredPkgVersion (1)。< 数据库中的 StoredPkgVersion 为 1。
SMS_DISTRIBUTION_MANAGER 4452 (0x1164) ~PackageID> 的 <SourceVersion (1)。 数据库中的 SourceVersion 为 1。
SMS_DISTRIBUTION_MANAGER 4452 (0x1164) ~包 PackageID> 的退出包<处理线程。
步骤 4:计划程序组件处理包处理线程创建的微型作业并创建发送请求
计划程序组件在收到用于传输包压缩副本的作业后唤醒,并创建发送方发送请求,以便发送方可以将压缩副本发送到目标站点。
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: State: Pending Status: Action: None Total size: 204864k Remaining : 204864k 检测信号: 12:23 开始: 12:00 完成: 12:00 重试: SWD PkgID: PackageID> SWD Pkg 版本: <1
步骤 5:发送方组件开始处理发送请求
发送方组件处理发送请求,并将包的压缩副本发送到目标站点。
主发送方线程启动一个发送线程,该线程将执行此发送请求的所有工作。
SMS_LAN_SENDER 6700 (0x1a2c) 找到发送请求。 ID: 202SQCS1, Dest Site: PS1~
SMS_LAN_SENDER 6700 (0x1a2c) 检查站点特定的发送容量。 已用 0 个,共 3 个。~
SMS_LAN_SENDER 6700 (0x1a2c) ~创建发送线程 (线程 ID = 1150)发送线程处理发送请求,并将压缩包文件(PCK 文件)连同包指令文件(SNI 文件)复制到目标站点。
SMS_LAN_SENDER 4432 (0x1150) ~尝试第 1 号地址 (共 1 个)
SMS_LAN_SENDER 4432 (0x1150) ~通过 xmit 文件测试,请使用现有连接
SMS_LAN_SENDER 4432 (0x1150) ~包文件 = 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。PCK 位于位置 0
SMS_LAN_SENDER 4432 (0x1150) ~将 1024 字节写入 \\PS1SITE.CONTOSO.COM\SMS_SITE\202SQCS1。PCK 位于位置 0...
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) ~已完成向站点 PS1 发送 SWD 包 <PackageID> 版本 1 ...
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) ~已完成向站点 PS1 发送 SWD 包 <PackageID> 版本 1 ...
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:Despooler 处理 PCK 和 SNI 文件
在步骤 5 中, PCK 和 SNI 文件复制到 SMS_SITE
接收网站上的共享。 在每个 Configuration Manager 站点上, \inboxes\despoolr.box\receive 文件夹共享为 SMS_SITE
。 当这些文件到达 despoolr.box\receive 文件夹中时, despooler
组件将唤醒以处理 SNI 文件,该文件是指令文件。
主 despooler 线程创建一个反池线程。
主 Despooler 查找指令文件并创建一个用于处理指令文件的反池线程:
SMS_DESPOOLER 6128 (0x17f0) ~找到就绪指令 202sqcs1.sni
SMS_DESPOOLER 6128 (0x17f0) ~在 3 个脱机线程中使用了 0 个
SMS_DESPOOLER 6128 (0x17f0) ~创建了一个新的脱机线程 EE8(偶发)Despooling 线程有时无法在第一次尝试时处理指令,并在 5 分钟后重试。
反池线程处理指令文件,但在许多情况下,第一次反池程序会尝试处理包的指令文件,而“包信息尚未到达此版本”消息失败,因为包元数据信息尚未复制到接收站点。 发生这种情况时,despooler.log显示“错误代码 = 12”,但在 5 分钟后重试此指令,因为包信息在此期间复制成功。 步骤 7-3 显示了重试时指令的成功处理。
SMS_DESPOOLER 3816 (0xee8) ~验证指令 E:\ConfigMgr\inboxes\despoolr.box\receive\ds_s76nc.ist 类型的签名MICROSOFT|SMS|MINIJOBINSTRUCTION|包
SMS_DESPOOLER 3816 (0xee8) ~签名已签出“确定”,以获取来自站点 CS1 的说明,继续执行指令。
SMS_DESPOOLER 3816 (0xee8) ~MICROSOFT|SMS 类型的执行指令 |MINIJOBINSTRUCTION|包
SMS_DESPOOLER 3816 (0xee8) ~收到的包 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) ~指令 E:\ConfigMgr\inboxes\despoolr.box\receive\ds_3kyyh.sni 将不处理到 2016/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> 的退出包<处理线程。despooling 线程处理指令并将内容写入内容库。
反池线程处理指令,将 PCK 文件解压缩到临时位置,然后将内容写入内容库。
SMS_DESPOOLER 4072 (0xfe8) ~收到的程序包 <PackageID> 版本 1。 压缩文件 - E:\SMSPKG\<PackageID>。PCK.1 作为 E:\ConfigMgr\inboxes\despoolr.box\receive\PKGj3uib.TRY
SMS_DESPOOLER 4072 (0xfe8) ~Old package storedUNC path is.
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) ~包 <PackageID> (版本 0) 存在于分发源中,保存较新版本(版本 1)。
SMS_DESPOOLER 4072 (0xfe8) ~存储的包 <PackageID>。 存储包版本 = 1成功将内容提取到内容库后,在表中更新并
StoredPkgVersion
SMSPackages_L
插入行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())
反池线程更新接收站点的类型
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 May 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
,并删除 PKN 文件 DistMgr.box
,以指示 DistMgr 处理包。
SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) RCV:PkgNotify_Add的 PkgNotification 上的 INSERT [<PackageID> ][1035289]
SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) SND:已删除 E:\ConfigMgr\inboxes\distmgr.box\<PackageID>。PKN [1035289]
步骤 9:DistMgr 唤醒以处理包
DistMgr 在检测 PKN 文件并处理包后唤醒。
主 DistMgr 线程创建包处理线程。
主 DistMgr 线程将包添加到包处理队列,并创建包处理线程。
SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) 找到包属性更新了包“PackageID>”<的通知
SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) 向包处理队列添加包“<PackageID>”。
SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) ~当前使用 3 个允许的包处理线程中的 0 个。
SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) ~包“PackageID>”<的启动包处理线程,线程 ID = 0x93C (2364)包处理线程创建 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) 开始将包 PackageID <> 添加到服务器 [“Display=\\PS1DP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP1.CONTOSO.COM\...
SMS_DISTRIBUTION_MANAGER 2364 (0x93c) ~创建的 DP 处理线程 5204,用于在服务器上添加或更新 PackageID <> [“Display=\\PS1DP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP1.CONTOSO.COM\ ...
SMS_DISTRIBUTION_MANAGER 2364 (0x93c) ~等待所有 DP 线程完成 包 <PackageID> 处理线程。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=Mon May 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=Mon May 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
所有 DP 线程退出后,包进程线程将退出。
所有 DP 线程退出后,包处理线程也会退出:
SMS_DISTRIBUTION_MANAGER 2364 (0x93c) ~DP 线程,用于具有线程句柄000000000000218C和线程 ID 5204 的包 <PackageID> 。
SMS_DISTRIBUTION_MANAGER 2364 (0x93c) ~所有 DP 线程都已完成包 <PackageID> 处理线程。
SMS_DISTRIBUTION_MANAGER 2364 (0x93c) ~ 退出包 PackageID> 的包<处理线程。
步骤 10:SMSDBMON 通知 PkgXferMgr 处理在步骤 9-3 中创建的作业
在步骤 9-3 中创建 PkgxferMgr 作业后,SMSDBMON 会检测表中的 DistributionJobs
更改,并删除 PKN 文件 PkgTransferMgr.box
以指示 PkgXferMgr 处理作业:
SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) RCV:update on DistributionJobs for DistributionJob_Creation [<PackageID>][1035292]
SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) SND:已删除 E:\ConfigMgr\inboxes\PkgTransferMgr.box\<PackageID>。PKN [1035292]
步骤 11:PkgXferMgr 唤醒以处理作业
主 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)发送线程将内容复制到 DP。
发送线程开始将包内容复制到 DP。 此过程涉及将包中的所有文件复制到目录中的 DP
SMS_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 的旧内容 <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)从计算机(SMS_PACKAGE_TRANSFER_MANAGER)运行应用程序(PS1SITE.CONTOSO.COM)正在从站点提交 SDK 更改(PS1)
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 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”发送线程将状态消息发送到 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 16:34:27.614 2016 ISTR0=“<PackageID>” ISTR1=“1” ISTR2=“PS1DP1.CONTOSO.COM” ISTR3=“” ISTR4=“” ISTR4=“” ISTR5=“” 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 通过针对 SMS DP 提供程序命名空间(root\SCCMDP)中的 WMI 类执行方法 SMS_DistributionPoint
,指示 DP 将文件添加到内容库。 成功将内容添加到内容库后, SMSDPProv.log 会显示以下内容:
2996 (0xbb4) 包“<<PackageID.1”的内容“PackageID>>”已成功添加到内容库
步骤 13:DistMgr 处理步骤 11-3 中发送的状态消息
若要处理传入 的 STA 文件(在步骤 11-3 中发送),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 的处理 STA [“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\Admin 调用类SMS_Package实例的已审核方法。~
调用此方法时,SMS 提供程序将插入设置为 2 的行PkgServers
Action
(ADD):
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
更改,并删除 PKN 文件 DistMgr.box
,以指示 DistMgr 处理包:
SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) RCV:PkgNotify_Add [<PackageID>][1035417] 的 PkgNotification 上的 INSERT
SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) SND:已删除 E:\ConfigMgr\inboxes\distmgr.box\<PackageID>。PKN [1035417]
步骤 4:DistMgr 唤醒以处理包
DistMgr 在检测 PKN 文件并处理包后唤醒。
主 DistMgr 线程启动包处理线程。
主 DistMgr 线程将包添加到包处理队列,并创建包处理线程。
SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) 向包处理队列添加包“<PackageID>”。
SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) ~当前使用 3 个允许的包处理线程中的 0 个。
SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) ~包“PackageID>”<的启动包处理线程,线程 ID = 0xB58 (2904)包处理线程创建 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) 开始将包 PackageID <> 添加到服务器 [“Display=\\PS1DP2.CONTOSO.COM\”]MSWNET:[“SMS_SITE=PS1”]\\PS1DP2.CONTOSO.COM\...
SMS_DISTRIBUTION_MANAGER 2904 (0xb58) ~为><服务器 [Display=\\PS1DP2.CONTOSO.COM\“]MSWNET:[”SMS_SITE=PS1“]\\PS1DP2.CONTOSO.COM\ SMS_DISTRIBUTION_MANAGER 2904 (0xb58) ~等待所有 DP 线程完成包 PackageID <> 处理线程。DP 线程创建包传输管理器(PkgXferMgr)作业,以将内容传输到 DP,然后退出。
DP 线程(TID 3792)开始将包添加到 DP 的工作。 DP 线程不会将包内容直接复制到 DP,而是为 PkgXferMgr 创建一个作业,指示它将包内容复制到 DP。 以下日志条目显示创建 PkgXferMgr 作业的 DP 线程。 创建作业后,DP 线程的工作已完成,DP 线程退出。
SMS_DISTRIBUTION_MANAGER 3792 (0xed0) DP 线程:尝试在 DP 上添加或更新包 <PackageID> [“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=“” 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\”当 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 线程还会重置表中 DP
PkgServers_L
的操作: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
包处理线程在所有 DP 线程退出后退出。
所有 DP 线程退出后,包处理线程也会退出。
SMS_DISTRIBUTION_MANAGER 2904 (0xb58) ~DP 线程,将包 <PackageID> 与线程句柄0000000000002524和线程 ID 3792 结束。
SMS_DISTRIBUTION_MANAGER 2904 (0xb58) ~所有 DP 线程都已完成包 <PackageID> 处理线程。
SMS_DISTRIBUTION_MANAGER 2904 (0xb58) ~包 PackageID> 的退出包<处理线程。
步骤 5:SMSDBMON 通知 PkgXferMgr 处理作业
创建 PkgxferMgr 作业后,SMSDBMON 这次会检测表中的更改 DistributionJobs
,并删除 PKN 文件 PkgTransferMgr.box
以指示 PkgXferMgr 处理作业:
SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) RCV:update on DistributionJobs for DistributionJob_Creation [<PackageID>][1035419]
SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) SND:已删除 E:\ConfigMgr\inboxes\PkgTransferMgr.box\<PackageID>。PKN [1035419]
步骤 6:PkgXferMgr 唤醒以处理作业
主 PkgXferMgr 线程创建发送线程。
主 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)发送线程将内容复制到 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) 为 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”发送线程将状态消息发送到 DistMgr。
发送线程完成发送内容(成功/失败)后,它会将状态发送到 DistMgr,以便 DistMgr 可以处理和更新数据库中的状态。 通过删除包含目录中包状态的
DistMgr.box\incoming
STA 文件,将此状态发送到 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=“” 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 通过对 SMS DP 提供程序命名空间(root\SCCMDP)中的 WMI 类执行方法 SMS_DistributionPoint
,指示 DP 将文件添加到内容库。 成功将内容添加到内容库后, SMSDPProv.log 会显示以下内容:
1304 (0x518) 包“<<PackageID.1”的内容“PackageID>>”已成功添加到内容库
步骤 8:DistMgr 处理 PkgXferMgr 发送的状态消息
若要处理传入 的 STA 文件(在步骤 6-3 中发送),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 的处理 STA [“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\Admin 调用类SMS_ContentPackage实例的已审核方法。~
调用此方法时,SMS 提供程序在设置为 2(ADD)的 PkgServers Action
中插入一行,并在PkgNotification
表中创建通知。
步骤 2:如果管理员从其他主站点或管理中心站点分发包,DRS 会将更改复制到相关站点
如果管理员将此包与连接到管理中心站点或其他主站点的控制台一起分发,DRS 会将 PkgServers 中的更改复制到其他站点。
步骤 3:SMSDBMON 通知 DistMgr 处理包
将此更改复制到 DP 所在的站点后,SMSDBMON 会检测表中的更改 PkgNotification
,并删除 PKN 文件 DistMgr.box
,以指示 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 文件并处理包后唤醒。
主 DistMgr 线程启动包处理线程。
主 DistMgr 线程将包添加到包处理队列,并创建包处理线程。
SMS_DISTRIBUTION_MANAGER 5292 (0x14ac) 向包处理队列添加包“P010000F”。
SMS_DISTRIBUTION_MANAGER 5292 (0x14ac) ~当前使用 3 个允许的包处理线程中的 0 个。
SMS_DISTRIBUTION_MANAGER 5292 (0x14ac) ~包“P010000F”的启动包处理线程,线程 ID = 0x2C44 (11332)包处理线程创建 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) ~在服务器上添加或更新包P010000F的 DP 处理线程 22444 [“Display=\\P01PDP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=P01”]\\P01PDP1.CONTOSO.COM\
SMS_DISTRIBUTION_MANAGER 11332 (0x2c44) ~等待所有 DP 线程完成包P010000F处理线程。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) 包服务器 [“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 线程还会重置表中 DP
PkgServers_L
的操作。所有 DP 线程退出后,包处理线程将退出。
所有 DP 线程退出后,包处理线程也会退出。
SMS_DISTRIBUTION_MANAGER 11332 (0x2c44) ~DP 线程用于包P010000F,线程句柄为 000000000003E2C,线程 ID 22444 已结束。
SMS_DISTRIBUTION_MANAGER 11332 (0x2c44) ~所有 DP 线程都已完成包P010000F处理线程。
SMS_DISTRIBUTION_MANAGER 11332 (0x2c44) ~StoredPkgVersion (3) 包P010000F。 数据库中的 StoredPkgVersion 为 3。
包P010000F的 SMS_DISTRIBUTION_MANAGER 11332 (0x2c44) ~SourceVersion (3)。 数据库中的 SourceVersion 为 3。
SMS_DISTRIBUTION_MANAGER 11332 (0x2c44) ~用于包P010000F的退出包处理线程。
步骤 5:SMSDBMON 通知 PkgXferMgr 处理作业
创建 PkgxferMgr 作业后,SMSDBMON 这次会检测表中的 DistributionJobs
更改,并删除 PKN 文件 PkgTransferMgr.box
以指示 PkgXferMgr 处理作业。
SMS_DATABASE_NOTIFICATION_MONITOR 29748 (0x7434) RCV:DistributionJob_Creation的 DistributionJobs 更新 [P010000F ][145013]
SMS_DATABASE_NOTIFICATION_MONITOR 29748 (0x7434) SND: Dropd E:\ConfigMgr\inboxes\PkgTransferMgr.box\P010000F。PKN [145013]
步骤 6:PkgXferMgr 唤醒以处理作业
主 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)拉取 DP 发送线程向拉取 DP 发送通知
与常规发送线程不同,拉取 DP 发送线程(TID 11084)指示拉取 DP 通过发送通知开始下载内容。 这在 4 个阶段完成。
阶段 1: 拉取 DP 发送线程检查,以查看是否在源 DP 上提供分发到拉取 DP 的内容。 如果源 DP 上的内容不可用,请求 DP 发送线程将在日志中以以下消息结尾,并引发 状态消息 ID 8212 ,这意味着“此请求分发点没有可从中下载内容的源。稍后我们将重试。 稍后会根据软件分发组件配置>请求分发点选项卡中配置的重试设置尝试重试。
~找不到包P0100009下一个或多个内容的源位置,用于拉取 DP P01PDP1。CONTOSO.COM。 未发送通知。
~ PullDP 通知失败。 故障计数 = 1/30,重启时间 = 2019/1/10 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 Number Of Active Jobs 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) 从作业开始的拉取 DP 发送线程: 190, 包: P010000F, 版本: 3, 优先级: 2, 服务器: P01PDP1.CONTOSO.COM, DPPriority: 200
SMS_PACKAGE_TRANSFER_MANAGER 11084 (0x2b4c) 向 PullDP 发送包信息捆绑包P010000F。 [“Display=\\P01PDP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=P01”]\\P01PDP1.CONTOSO.COM\阶段 4:拉取 DP 发送线程在命名空间中的
root\SCCMDP
拉取 DP 上创建类的SMS_PullDPNotification
实例,其中包含包 ID、包版本和 XML 通知。 创建类实例SMS_PullDPNotification
后,它会在命名空间中的类中SMS_DistributionPoint
root\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,重启时间 = 2019/1/7 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>
拉取 DP 发送线程会更新作业,以便状态轮询可以启动。
与在成功完成后删除作业的标准 DP 发送线程不同,拉取 DP 发送线程会更新表中的作业
DistributionJobs
,并在成功将通知发送到拉取 DP 后设置SendAction
PullQueryResultAction
该作业。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 由于某种原因无法将状态消息发送到管理点。
(在轮询间隔上):将创建拉取 DP 发送线程以从拉取 DP 轮询分发状态。
新的拉取 DP 发送线程在“软件分发组件属性”中指定的“延迟”(分钟)值之后启动,以检查分发状态。 在下面的示例中,它会查询拉取 DP,并发现内容已成功安装,并将状态消息发送到分发管理器。
SMS_PACKAGE_TRANSFER_MANAGER 18724 (0x4924) 从作业开始的拉取 DP 发送线程: 194, 包: 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 加载作业
收到通知时,从 WMI 拉取 DP 组件加载作业,并验证 <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 - 加载的内容作业 {C10457F9-DE3A-4B45-878C-345919AFF97E} 的内容Content_3c9813ba-d7ab-4963-929c-36f90f479613.1 从 XML...
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} (状态: 3 适用于包 P010000F.3 内容Content_3c9813ba-d7ab-4963-929c-36f90f479613.1 的包的 NotStarted。
在上面的示例中,作业 {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} state: 1-NotStarted) for package P010000A.2 content 2484568c-7aba-44ae-8557-05b61d62e70d。
PullDP 4112 (0x1010) ContentExecuteJob {7175CD81-CF67-48C9-AA22-010BF60B640E} state: 1-NotStarted) for package P010000A.2 content c085b4ba-8e8f-42bf-8e2d-bc1067697722。
步骤 10:(如果适用)拉取 DP 下载内容签名
(如果适用)内容作业创建数据传输服务 (DTS) 作业以下载包签名。 签名文件是从源分发点的虚拟目录下载 SMSSIG$
的 TAR 文件,其中包含内容中每个文件的 RDC 签名。 RDC 签名用于确定文件内容是否已更改,以及是下载增量内容还是完整内容。 此步骤仅适用于已更改的内容,因此可能并不总是看到此步骤,而是会看到步骤 11。
PullDP 3812 (0xee4) 为包 P010000F.3、内容 ID Content_3c9813ba-d7ab-4963-929c-36f90f479613.1 创建 SignatureDownload DTS 作业 {3C962758-40F2-A585-E5B59E378BEA} 。 JobState = NotStarted
PullDP 3812 (0xee4) CPullDPPkgContJob::NotifyDeltaDownload。 JobState = [正在下载签名] Content_3c9813ba-d7ab-4963-929c-36f90f479613.1 for package P010000F.3 内容作业 ID {C10457F9-DE3A-4B45-878C-345919AFF97E}
PullDP 752 (0x2f0) ContentExecuteJob {C10457F9-DE3A-4B45-878C-345919AFF97E} (state: 4-下载签名)用于包 P010000F.3 内容Content_3c9813ba-d7ab-4963-929c-36f90f479613.1。
DataTransferService.log 显示 DTS 作业的进度,该作业创建 BITS 作业以下载签名文件,并在完成后通知:
DataTransferService 3812 (0xee4) DTSJob {3C962758-7ABE-40F2-A585-E5B59E378BEA} 创建的从“<
https://P01MP.CONTOSO.COM:443/SMS_DP_SMSSIG$
>' 下载” 到“E:\SMS_DP$\P010000F\Content_3c9813ba-d7ab-4963-929c-36f90f479613.1”。
针对 DTS 作业“{3C962758-7ABE-40F2-A585-E5B59E378BEA}”开始下载 DATATransferService 3856 (0xf10) 启动 BITS 下载。
DataTransferService 3856 (0xf10) 启动 BITS 作业“{43647077-986C-4727-A954-B327ECA50302}” 对于用户“S-1-5-18”下的 DTS 作业“{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) 执行调用 DTS 作业“{3C962758-7ABE-40F2-A585-E5B59E378BEA}”。 当前状态:“RetrievedData”。
状态为“NotifiedComplete”的 DataTransferService 3856 (0xf10) DTSJob {3C962758-7ABE-40F2-A585-E5B59E378BEA}。
DataTransferService 3856 (0xf10) DTS 作业 {3C962758-7ABE-40F2-A585-E5B59E378BEA} 已完成:
拉取 DP 接收完成通知,并处理签名以确定是否需要完整下载或增量下载。
已收到内容作业 {C10457F9-DE3A-4B45-878C-345919AFF97E} 的 PullDP 4300 (0x10cc) DTS 消息,搜索 1 个包含此内容作业的任何活动作业。 DTS 作业为 {3C962758-7ABE-40F2-A585-E5B59E378BEA}
拉取DP 4300 (0x10cc) DTS 已成功接收P010000F.3 的消息,内容作业 {C10457F9-DE3A-4B45-878C-345919AFF97E},状态为0x0:
PullDP 3856 (0xf10) ContentExecuteJob {C10457F9-DE3A-4B45-878C-345919AFF97E} (state: 5-Signature Downloaded) for package P010000F.3 content Content_3c9813ba-d7ab-4963-929c-36f90f479613.1。
步骤 11:拉取 DP 创建用于下载内容的 DataTransferService (DTS) 作业
拉取 DP 为内容创建下载作业。 在此示例中,拉取 DP 上不存在内容,因此会为包创建完全下载 DTS 作业。 DTS 作业可用于跟踪下一步DataTransferService.log中的下载过程:
已收到内容作业 {C10457F9-DE3A-4B45-878C-345919AFF97E} 的 PullDP 4300 (0x10cc) DTS 消息,搜索 1 个包含此内容作业的任何活动作业。 DTS 作业为 {3C962758-7ABE-40F2-A585-E5B59E378BEA}
拉取DP 4300 (0x10cc) DTS 已成功接收P010000F.3 的消息,内容作业 {C10457F9-DE3A-4B45-878C-345919AFF97E},状态为0x0:
PullDP 3856 (0xf10) ContentExecuteJob {C10457F9-DE3A-4B45-878C-345919AFF97E} (state: 5-Signature Downloaded) for package P010000F.3 content Content_3c9813ba-d7ab-4963-929c-36f90f479613.1。 ...
PullDP 3856 (0xf10) 文件微软待办wnload: ConfigMgrTools.msi
PullDP 3856 (0xf10) Content_3c9813ba-d7ab-4963-929c-36f90f479613.1:已有 0 个文件,1 个要下载的文件
Package P010000F.3 的 PullDP 3856 (0xf10) Created FullDownload(Manifest) 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 还会显示有关下载进度的详细信息。
DataTransferService 3856 (0xf10) DTSJob {78635652-3D12-4A26-A51B-D553934ECB54} 创建的从“<
https://P01MP.CONTOSO.COM:443/SMS_DP_SMSPKG$/Content_3c9813ba-d7ab-4963-929c-36f90f479613.1
>' 下载” 到“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 并将内容移动到 “下载 ”状态:
针对内容作业 {C10457F9-DE3A-4B45-878C-345919AFF97E} 收到的拉取DP 3812 (0xee4) DTS 消息,搜索 1 个包含此内容作业的任何活动作业。 DTS 作业为 {78635652-3D12-4A26-A51B-D553934ECB54}
为 P010000F.3 接收的 PullDP 3812 (0xee4) DTS 成功消息,内容作业 {C10457F9-DE3A-4B45-878C-345919AFF97E},状态为0x0:
PullDP 3856 (0xf10) ContentExecuteJob {C10457F9-DE3A-4B45-878C-345919AFF97E} (state :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} (state: 1 包 P010000F.3 内容Content_3c9813ba-d7ab-4963-929c-36f90f479613.1 的包 SIApplied)。
...
PullDP 3812 (0xee4) CPullDPPkgContJob::NotifySucceeded()。 包 P010000F.3 和内容Content_3c9813ba-d7ab-4963-929c-36f90f479613.1 的内容作业 {C10457F9-DE3A-4B45-878C-345919AFF97E} 已完成。 JobState = Succeeded
拉取DP 3812 (0xee4) 通知内容作业 {C10457F9-DE3A-4B45-878C-345919AFF97E} 包 P010000F.3 已完成。
将每个内容项添加到内容库后,也会通知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”的 MP 0x00000001 (1) 状态消息
PullDP 3812 (0xee4) 请求成功。
PullDP 3812 (0xee4) CPullDPResponse::ReportPackageState 返回值0x00000000。
启用详细和调试日志记录后,可以看到整个消息正文:
PullDP 3812 (0xee4) 发送报告
PullDP 3812 (0xee4) <报告 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.00000+000</Date><Version>1.0</Version><Format>1.1</Format></ReportDetails></ReportHeader>
<ReportBody><StateMessage MessageTime=“20190107200618.00000+000” SerialNumber=“3”><Topic ID=“P010000F” Type=“902” IDType=“0”/><State ID=“1” Criticality=“0”/><UserParameters Flags=“0” Count=“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_Relay MP 上的终结点接收状态消息并将其移动到站点服务器
MP_Relay
管理点上的终结点处理状态消息并将状态消息 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) 消息正文:
<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.00000+000</Date><Version>1.0</Version><Format>1.1</Format></ReportDetails></ReportHeader<>
<ReportBody><StateMessage MessageTime=“20190107200618.00000+000” SerialNumber=“3”><Topic ID=“P010000F” Type=“902” IDType=“0”/><State ID=“1” Criticality=“0”/><UserParameters Flags=“0” Count=“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' 的 cmdline?<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><版本>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 Param><>[“Display=\\P01PDP1.CONTOSO.COM\”]MSWNET:[“SMS_SITE=P01”]\\P01PDP1.CONTOSO.COM\</Param><Param>{04AD1BB3-5E54-457A-9873-DFB2E8035090}</Param><Param/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: Dropd E:\ConfigMgr\inboxes\distmgr.box\incoming\72057594037928008.PUL [145014]
步骤 21:DistMgr 更新分发状态
DistMgr 处理 . PUL 文件,并根据文件名从 PullDPResponse
表中检索行,并更新包状态。 处理响应后,DistMgr 将从 PullDPResponse
表中删除已处理的行。
SMS_DISTRIBUTION_MANAGER 32876 (0x806c) SQL>>>选择 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) ~处理 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\Admin 调用类SMS_Package实例的已审核方法。~
调用此方法时,SMS 提供程序将更新SMSPackages
为将操作设置为 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 检测表中导致其删除< PackageID> 的更改。PkgNotification
PKN 文件DistMgr.box
,指示 DistMgr 处理包:
SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) RCV:PkgNotify_Add [<PackageID>][1036610] 的 PkgNotification 上的 INSERT
SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) SND:已删除 E:\ConfigMgr\inboxes\distmgr.box\<PackageID>。PKN [1036610]
步骤 3:DistMgr 在收到 PKN 文件后唤醒以处理包
主 DistMgr 线程启动包处理线程。
主 DistMgr 线程将包添加到包处理队列,并创建包处理线程。
SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) 找到包属性更新了包“PackageID>”<的通知
SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) 向包处理队列添加包“<PackageID>”。
SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) ~当前使用 3 个允许的包处理线程中的 0 个。
SMS_DISTRIBUTION_MANAGER 4824 (0x12d8) ~包“PackageID>”<的启动包处理线程,线程 ID = 0x1690 (5776)包处理线程创建包快照,将内容写入内容库,并递增包版本。
包处理线程(在本例中为线程 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 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=Tue May 17 18:31:23.982 2016 ISTR0=“PS100039” ISTR1=“” ISTR2=“” ISTR3=“” ISTR4=“” ISTR5=“” ISTR6=“” ISTR7=“” ISTR8=“” ISTR9=“” NUMATTRS=1 AID0=400 AVAL0=“PS100039”包处理线程进程启动 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) ~在服务器上添加或更新包PS100039的 DP 处理线程 920 [“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) ~在服务器上添加或更新包PS100039的 DP 处理线程 2060 [“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) ~在服务器上添加或更新包PS100039的 DP 处理线程 6076 [“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) ~等待所有 DP 线程完成包PS100039处理线程。DP 线程启动并创建 PkgXferMgr 作业以将内容传输到 DP,然后退出。
DP 线程开始创建 PkgXferMgr 作业以更新 DP 上的包。 此时,四个不同的 DP 有四个 DP 线程:
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)
(如果适用)包处理线程创建一个小型作业,用于将包的压缩副本发送到其他站点。
完成所有 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=Tue May 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.包处理线程在处理包后退出:
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 (2) 包PS100039。 数据库中的 StoredPkgVersion 为 2。
SMS_DISTRIBUTION_MANAGER 5776 (0x1690) ~SourceVersion (2) 包PS100039。 数据库中的 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=Tue May 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
,并删除 PKN 文件 PkgTransferMgr.box
以指示 PkgXferMgr 处理作业:
SMS_DATABASE_NOTIFICATION_MONITOR 1792 (0x700) RCV: update on DistributionJobs for DistributionJob_Creation [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 唤醒以处理包
主 DistMgr 线程启动包处理线程。
包处理线程创建 DP 线程来处理包操作,并等待它们退出。
DP 线程创建 PkgXferMgr 作业,将包添加到 DPS,然后退出。
DP 线程开始处理将包添加到 DP。 DP 线程不会将包内容直接复制到 DP,而是为包传输管理器(PkgXferMgr)创建一个作业,指示将包内容复制到 DP。 以下日志条目显示创建 PkgXferMgr 作业的 DP 线程。 创建作业后,DP 线程的工作已完成,DP 线程退出。
SMS_DISTRIBUTION_MANAGER 3792 (0xed0) DP 线程:尝试在 DP 上添加或更新包 <PackageID> [“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=“” 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\”当 DP 线程创建 PkgXferMgr 作业时,它会通过在表中插入一行
DistributionJobs
来执行此操作。 对于重新分发包, 操作 设置为 2。insert into DistributionJobs (DPID,PkgID,PackageVersion,State,CreationTime,Action) values(32,N'CS100026',1,0,N'2016/05/16 16:03:49',2)
包处理线程在所有 DP 线程退出后退出。
步骤 5:SMSDBMON 通知 PkgXferMgr 处理作业
步骤 6:PkgXferMgr 唤醒以处理作业
主 PkgXferMgr 线程创建发送线程。
发送线程或拉取 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) 为 packageID <发送旧内容 <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\73E0\73E05438D4731F41DB6C3BCB90000226B330C73942454A174D7E26533]
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$\73E055438D4731F41DB6C3BCB90919F60000226B330C73942454A174D7E26533-PackageID.1.temp<> 在 344 时钟周期中的位置208732160
SMS_PACKAGE_TRANSFER_MANAGER 5272 (0x1498) ~发送已完成 [E:\SCCMContentLib\FileLib\73E0\73E0\73E05438D4731F41DB6C3BCB90000226B330C73942454A174D7E26533]
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 显示 操作 设置为 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:redistribute/redownload 所有文件
完成此操作后,剩余过程类似于分发包以拉取 DP 的步骤 6 中所述的过程。
发送线程将状态消息发送到 DistMgr。