如何查找和清理高级客户端重复 Guid 在 SMS 2003 中


概要


本文介绍如何查找和清除 Microsoft 系统管理服务器 (SMS) 2003年高级客户端具有相同 SMS 唯一 ID (SMSID),也称为全局唯一标识符 (GUID)。SMSID 用来标识各个 SMS 2003 客户端,并且是唯一每个 SMS 2003 高级客户端和每个 SMS 2003 的旧式客户端。

简介


如果您有 SMS 2003 高级客户端具有重复的 SMSIDs,您可能会遇到意外的事件。例如,您可能会收到不正确的库存报告,而错误的 SMS 2003 高级客户端可以运行的广告。重复的 SMSIDs 是常说的"重复 Guid"。

SMS 2003 环境可能包含有一个重复的 SMSIDs 的 SMS 2003 高级客户端或多个下列条件都为真︰
  • 重复的 SMSID 问题中可能存在的 SMS 2.0 环境之前您升级到 SMS 2003 高级客户端。
  • 重复的 SMSID 问题可能存在于 SMS 2003 的旧式客户端之前您升级到 SMS 2003 高级客户端。



如果您有重复的 SMSIDs 的 SMS 2003 高级客户端,您可能会如遇到意外的事件︰
  • SMS 管理员控制台中显示只有最后一次发现客户端共享一个 GUID 的客户端。如果多台不同计算机具有相同的 GUID,它们相互替换的集合中。这是因为他们发现记录的每个处理。
  • 广告可以运行在错误的计算机上或根本不是。
  • 从具有同一 GUID 的计算机的库存记录 (Mif) 处理时,计算机的清单属性可以将合并。
  • SMS 高级管理人员,特别是库存数据加载器组件,可以独占 CPU,则可以使用大量内存,或两者。这较大的结果集,它是由于返回查询特定 GUID 与关联的记录时。库存数据加载程序会占用大量的内存。如果停止库存数据加载程序会导致释放的内存或 CPU 使用率将恢复到正常,重复 Guid 是有可能的原因。
  • SMS 客户端推送安装不会安装 SMS 客户端。
  • 可以生成过多的库存 Resyncs。重复的 SMSIDs 是常说的"重复 Guid"。

详细信息


如果下列条件都为真,升级的高级客户端使用包含 SMSID 在%windir%\Smscfg.ini 文件中的 SMS 2003 高级客户端唯一标识符︰
  • 升级到 SMS 2003 高级客户端的 Microsoft 系统管理服务器 (SMS) 版本 2.0 客户端或 SMS 2003 的旧客户端。
  • 在已升级的计算机包含的 Smscfg.ini 文件。
通常情况下,这种情况下不会有问题。但是,如果满足以下条件之一为真,SMS 2003 环境中出现重复的 SMSID 问题︰
  • Smscfg.ini 文件不是唯一的单个计算机的
  • 复制包含 Smscfg.ini 文件的计算机图像。
通常情况下,SMS 2003 高级客户端用于检测不再原来安装的计算机上运行。这是通过比较在启动以前启动时这些属性的值确定硬件的某些属性。检测过程完成后,SMS 2003 高级客户端将为自身生成新的 SMSID。SMS 2003 高级客户端会通过在启动时运行比较过程。 SMS 2003 高级客户端将从以前启动这些属性的值确定硬件的某些属性进行比较。如果显著更改这些属性,则生成新的 SMSID。此外,保存旧的 SMSID 和 SMSID 时重新生成的日期。以前的 SMSID 和更改日期报告发送到 SMS 2003 站点服务器搜索数据记录 (DDR) 中。此信息还出现在下列系统资源属性中︰
  • 上一个 SMS UUID
  • SMS UUID 更改日期
这一过程只有通过 SMS 2003 高级客户端检测到更改。 如果 SMS 2003 高级客户端都有一个非唯一的 Smscfg.ini 文件检测到任何更改时,SMS 2003 高级客户端将继续使用原始的 SMSID。


Smscfg.ini 文件存储以下信息︰
  • 当前的 SMSID
  • 识别硬件属性
  • 任何以前的 SMSID
您可以在 Windows 目录中找到 Smscfg.ini 文件。

在 ClientIDManagerStartup.log 文件中,可以找到有关属性检测和再生过程的信息。您可以在客户端日志目录中找到此文件。

硬件检测的工作原理

SMS 代理主机 (Ccmexec.exe) 在启动时,它看待有关硬件标识信息的三个值。如果更改了这些值中的任何一个,则 SMS 客户端将生成新的 SMSID。值如下所示︰
  • Smbios 的序列号
    如果发生更改,则会创建新 SMSID


  • 计算机 SID
    如果发生更改,则会创建新 SMSID


  • 硬件 id
    硬件 ID 机制检查 10 个计算机属性和生成的属性的 ID 将属性的哈希值合并到一个单一的 id。 如果一定数量的这些属性更改,即认为计算机,并创建新的 SMSID。属性的数目是 7 的 3 10 个台式计算机和膝上型计算机 2 个。


    注意:变化率可能是一个因素。请考虑以下情形。如果 6 属性更改,但更改地分布平均超过 3 计算的硬件 id。SMS 不会考虑这样的硬件更改,并且不会创建新的 SMSID。

    使用这些属性是在 windows 产品激活中使用的属性相同。属性如下所示︰
    • FirstDriveSerial
    • MACAddress
    • CDROMDevice
    • DisplayAdapter
    • HwidVersion
    • ProcessorSerial
    • DiskDevice
    • SCSIAdapter
    • DiskAdapter
    • ProcessorType
    • RAMSizeMb
    • 可停靠
您可以看到的更改,并且会引起我们通过查看 ClientIDManagerStartup.log 文件中创建一个新的 ID 的值。

SMS 2003 如何处理重复 SMSIDs

如果客户端的操作系统是重新映像和客户端启动报告有不同的 SMSID 到 SMS 站点服务器的搜索数据记录 (Ddr),SMS 将不识别为以前的 SMS 客户端计算机。在这种情况下,发现数据管理器 (DDM) 将在数据库中创建新的客户记录。

但是这发生之前,发现数据管理器将尝试通过其他方法找到客户端。

如果计算机的名称和至少一个其 MAC 地址保持不变,SMS 将能够使用这些键的属性以便将计算机识别为现有的客户机,并使用新的 SMSID 更新的旧记录。它可能需要 SMSID 转换为完整的一些时间,在这段时间公布到客户端程序将不可用。


此匹配,可以规避,如果来自客户端的 DDR 中包含以前的 SMSID 值。当试图找到一个基于键属性记录 DDM 时,它明确将排除任何 SMSID 与在 DDR 中以前的 SMSID 值相匹配的数据库记录。 这样可确保,如果新 SMSID 由客户机生成的它将接收服务器上新的标识。


如果现有的 SMS 2.0 客户端已经有一个重复的 ID 在升级前,重复的 ID 将保留,而且必须标明并手动清理。

如何查找 SMS 2003 高级客户端具有重复 SMSIDs

要确定 whetheryour 环境具有重复的 SMSID 问题,您必须运行可能会共享相同的唯一 ID 的 SMS报告的计算机。若要执行此操作,请执行以下步骤:
  1. 单击开始,指向程序、 指向系统管理服务器,然后单击SMS 管理员控制台
  2. 在 SMS 管理员控制台中,展开站点数据库,展开报告,,然后单击报告
  3. 在 SMS 管理员控制台的右窗格中,右键单击计算机,可能会共享相同的 SMS 唯一 ID,然后单击所有任务
  4. 单击运行,然后单击SiteServerName,其中SiteServerName是 SMS 2003 站点服务器的名称。
SMS 2.0 管理员手册包含下面的 SQL 查询,以确定重复项。
select * from sms_g_system_SYSTEM as g INNER JOIN sms_gh_system_SYSTEM as h on g.ResourceId = h.ResourceId where g.Name <> h.Name
为"SMS 2.0 中的重复处理系统"的相关联的文档包含标识重复项的其他方法和支持 Web 进行强制转换。

如何创建新 SMSID

如果计算机可以共享相同的唯一 ID 的 SMS 报告显示所有 SMS 2003 高级客户端都使用相同的 SMSID,我们建议使用传送 SMS ID 工具 (Tranguid.exe) 来解决此问题。 传送 SMS ID 工具将出现在 SMS 2003 Toolkit 1。

传送 SMS ID 工具提取包含 SMSID 的 Smscfg.ini 文件的一部分。 传送 SMS ID 工具然后创建一个新的 Smscfg.ini 文件包含仅 SMSID 信息。 此外,传输 SMS ID 工具可以创建的 Smscfg.ini 文件的以前的 SMSID 属性中添加的 SMSID 文件。此过程可确保客户端在数据库中有一个新的记录。



传送 SMS ID 工具强制客户端,以生成新的 SMSID 并收到一个新的记录在数据库中。客户端已安装,并且已开始报告之后,将发生此过程。

满足以下所有条件时,必须使用/r开关运行传送 SMS ID 工具,然后重新启动 SMS 客户端服务︰
  • 计算机已从 SMS 2.0 客户端升级。
  • 该 SMS 2.0 客户端与其他计算机共享 SMSID。
若要使用/r开关运行传送 SMS ID 工具,然后重新启动 SMS 客户端服务,请按照下列步骤。

注意:您必须具有重复 SMSID SMS 2003 高级客户端上运行转移 SMS ID 工具。若要执行此操作,请执行以下步骤:
  1. 将 SMS 2003 Toolkit 1 Tranguid.exe 实用程序复制到 SMS 2003 客户端。
  2. SMS 2003 客户端中,单击开始,单击运行,在打开框中,键入cmd ,然后单击确定
  3. 在命令提示符下,切换到文件夹复制 Tranguid.exe 实用程序的位置。
  4. 在命令提示符下,键入tranguid /R,然后按 enter 键。
  5. 在命令提示符下,键入退出,,然后按 enter 键。

  6. 单击开始,指向程序,指向管理工具,然后单击服务

  7. 在服务列表中,用鼠标右键单击SMS 代理主机,然后单击重新启动



或者,使用下面的方法来分配新的 SMSID:
  1. SMS 2003 高级客户端上具有重复的 SMSID,删除%windir%\Smscfg.ini 文件。

  2. 单击开始,指向程序,指向管理工具,然后单击服务
  3. 在服务列表中,用鼠标右键单击SMS 代理主机,然后单击重新启动



SMS 代理主机服务重新启动后,会生成一个新的 Smscfg.ini 文件包含新的 SMSID。旧的 SMSID 和 SMSID 时重新生成的日期将会保存。

客户端显式生成新的 SMSID 可以轻松识别通过匹配旧记录的 SMSID 属性以前的 SMSID 属性的新记录。

下面的 SQL 查询演示此操作通过列出孤立的记录和客户端生成新 SMSID 的时间。
select distinct sysold.ResourceID, sysold.Netbios_Name0,
SMS_UUID_Change_Date0
from v_R_System sysold
join v_R_System sysnew
on sysold.SMS_Unique_Identifier0 = sysnew.Previous_SMS_UUID0
order by sysold.Netbios_Name0, sysold.ResourceID

参考资料


高级客户端推送安装的疑难解答的详细信息,请参阅以下文章 Microsoft 知识库中相应的文章︰

928282 如何解决高级客户端推送安装问题中的系统管理服务器 2003年和系统中心配置管理器 2007