No HW inventory after SCCM client upgrade

I encountered this problem when migrated Windows 2000 servers from SMS 2003 to SCCM 2007.

CCMsetup finalised successfully and the client registered in the new SCCM site and downloaded policies but no HW inventory is sent back to the site server.

Check “InventoryAgent.log” on the client computer.

Unknown error encountered processing an instance of class CCM_System: 80041013 Collection: Failed to process mandatory data item for class: CCM_System. Cycle abandoned !!   InventoryAgent Failed to process instances of CCM_System: 80004005

Resolution was to restart the Windows 2000 system and the SCCM agent started to work as expected again. This error did not occur on all Windows 2000 servers at my customer.

Running SCCM site server on VM-Ware

I migrated about 2500 servers from SMS2003 to SCCM where the new Primary server and other SCCM infrastructure servers were virtual servers.

I migrated the clients by sending out a CCMsetup package from SMS in batches of 500 systems per hour. When the agents started to report initial full inventory the new Site server it needed more hardware and after upgrade of 2 more CPU’s and 2GB of extra RAM it’s running smooth and with good performance.

OS and roles:
Windows 2008 R2 x64
SQL Server 2008 x64
Site Database
Management point
Reporting point

Virtual Hardware:
4 CPU’s
8GB RAM
400GB virtual disc

SUP and Distribution points are placed on own machines.

Find and Delete duplicates in SMS and SCCM db

SMS 2.0 had problems with duplicates in the database and this problem was not solved in SMS2003. Now I have seen it also in SCCM.

I have been using these two below scripts many times to manually find and delete all duplicates only keeping the latest record.

First script shows all duplicates:

SELECT DIS.*
FROM System_DISC DIS
Join ( Select Name0, resource_domain_or_workgr0
FROM System_DISC
group by Name0, resource_domain_or_workgr0
having count(*) > 1)
As DUP on DUP.Name0 = DIS.Name0
And DUP.resource_domain_or_workgr0 = DIS.resource_domain_or_workgr0
order by Netbios_Name0

Second script deletes the duplicates but keep the most recently discovered record:

delete from system_disc where
itemkey in
(SELECT distinct DIS.itemkey
FROM System_DISC DIS
Join ( Select Name0, Creation_Date0
FROM System_DISC where Name0 IN ( Select Name0
FROM System_DISC
group by Name0
having count(*) > 1))
As DUP on DUP.Name0 = DIS.Name0
where (DIS.Creation_Date0 < DUP.Creation_Date0 or DIS.Creation_Date0 is null))