Share via


ConfigMgr (SCCM) – Duplicate Record Issue

I have seen lot of DUPLICATE record related issues faced by lot of people in the Forums.

 

William Eriepa has explained the issue as below in the technet thread.

Read Updated Post @ http://anoopcnair.com/2011/04/08/configmgr-sccm-duplicate-record-issue/

ISSUE (Credits to William Eriepa)

“Hi. I am having a intermittent issue with duplicate records showing up for computers only. The issue seems to be attributed to the different discovery methods that SCCM uses. I’ve read many different posts on Technet and other sites but have been unable to find a solution. I’ve checked the related discovery logs, and haven’t seen any discovery errors or issues that I can discern.

I have a single primary site that uses discovery. My hierarchy is R3. Here are my discovery settings:

AD System Discovery: 2days (5min delta)
AD System Group Discovery: 15minutes (5min delta)
Heartbeat Discovery:8 hours
Network Discovery:Disabled

The basic problem is when I build a new computer sometimes it will do as follows:

*1. Computer is built through OSD – Once built SCCM client sends a DDR to the Site Server and a record is created for it.
*
*2. Up to 15 minutes later when AD Sys Grp Disc runs, the record is populated with the correct AD Group/OU information etc.
*
*3. Up to 2 days later when AD Sys Disc runs, a new record is created for the same computer. This record has for most of the fields including the SMSGUID, but it does have the correct AD Group/OU information (i.e. this record was created directly from AD/DNS but is in no way associated with the computer record already in SCCM).
*
*4. Further AD Sys Grp Discoveries only update the new record that isn’t linked to the actual client
*
5. The original record (that is linked to the actual client) loses the AD Group/OU information it had, and is no longer updated by further AD Sys Grp Discoveries. Heartbeat discoveries continue to work as per normal.
*
*
This problem is far from consistent. Recently I built eight computers PC01 – PC08 at exactly the same time, out of them only PC02 experienced this problem. The original record for PC02 was created on 11/03/2011 4:53:56pm via the DDR/Heartbeat Discovery, this record was correctly processing AD Sys Grp Discoveries. Then another record for PC02 was created on 12/03/2011 12:15:35 am via AD Sys Disc. At this point the original record lost its AD Group/OU associations and no longer processed AD Sys Grp Disc.

Deleting the “new” record created by AD Sys Disc results in the “original” record getting the correct AD Group/OU information during the next AD Sys Grp Discovery – so I do have a way to treat this problem, but I would like to find out what I can do to stop it happening in the first place.”

Workaround

Duplicate Records are created due to the discovery data manager mechanism which runs a query and sorts the results by date. It will update the most recent returned result rather than the active result if more than 1 result is returned. Any subsequent AD discovery will then update the NULL or inactive entry in the database instead of the active entry.

This is Know Issue with Microsoft. The workaround is available to remove the duplicate records. The below mentioned query will identify duplicate records of clients:

Select R.ResourceID,R.ResourceType,R.Name,R.SMSUniqueIdentifier,R.ResourceDomainORWorkgroup,R.Client from SMS_R_System as r full join SMS_R_System as s1 on s1.ResourceId = r.ResourceId full join SMS_R_System as s2 on s2.Name = s1.Name where s1.Name = s2.Name and s1.ResourceId != s2.ResourceId and R.Client = null

Once those duplicates are identified and fetched in to the collection, we can delete those records with following process. All future AD group discovery will update the correct record in the database.

1.Create a collection for colleting the duplicate system with NULL record. Please use the below query:
Select R.ResourceID,R.ResourceType,R.Name,R.SMSUniqueIdentifier,R.ResourceDomainORWorkgroup,R.Client from SMS_R_System as r full join SMS_R_System as s1 on s1.ResourceId = r.ResourceId full join SMS_R_System as s2 on s2.Name = s1.Name where s1.Name = s2.Name and s1.ResourceId != s2.ResourceId and R.Client = null
2.Once the collection is created and records are populated. Right click and select delete special.
3.This will delete all the systems which are populated in this collection.