Friday, July 2, 2010

Event 7888 and 5553

I have been getting these errors in my event log:


Event Type: Error
Event Source: Office SharePoint Server
Event Category: Office Server General
Event ID: 7888
Date: 2010/07/02
Time: 10:01:41 AM
User: N/A
Computer: xxxxxxxxxxxxxxxx
Description:
A runtime exception was detected. Details follow.
Message: Cannot insert duplicate key row in object 'dbo.UserMemberships' with unique index 'CX_UserMemberships_RecordId_MemberGroupId_SID'.
The statement has been terminated.

Techinal Details:
System.Data.SqlClient.SqlException: Cannot insert duplicate key row in object 'dbo.UserMemberships' with unique index 'CX_UserMemberships_RecordId_MemberGroupId_SID'.
The statement has been terminated.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at Microsoft.Office.Server.Data.SqlSession.ExecuteNonQuery(SqlCommand command)
at Microsoft.Office.Server.UserProfiles.WSSSynchSqlSession.SynchExecuteNonQuery(SqlCommand cmd, Boolean throwOnFail)
at Microsoft.Office.Server.UserProfiles.WSSSynchSqlSession.SynchExecuteNonQuery(SqlCommand cmd)
at Microsoft.Office.Server.UserProfiles.SiteSynchronizer.WriteChangeLogConsumed()
at Microsoft.Office.Server.UserProfiles.SiteSynchronizer.Synch()
at Microsoft.Office.Server.Diagnostics.FirstChanceHandler.ExceptionFilter(Boolean fRethrowException, TryBlock tryBlock, FilterBlock filter, CatchBlock catchBlock, FinallyBlock finallyBlock)

and


Event Type: Error
Event Source: Office SharePoint Server
Event Category: User Profiles
Event ID: 5553
Date: 2010/07/02
Time: 10:01:41 AM
User: N/A
Computer: V058MOSFFF002
Description:
failure trying to synch site ac379cbb-a2da-4637-ae11-fb511f07a1dc for ContentDB f788b294-67ca-499f-94d8-508f2946512c WebApp e971af36-c174-4c4f-9b6b-a0ee8b628274. Exception message was Cannot insert duplicate key row in object 'dbo.UserMemberships' with unique index 'CX_UserMemberships_RecordId_MemberGroupId_SID'.
The statement has been terminated..


To fix it in my case (we have MOSS SP2 installed), we ran the following commands:

stsadm -o sync -listolddatabases 5
* This will list the database giving the problem and you will be able to match the database ID with the one in the Event Log *

stsadm -o sync -listolddatabases 0
* This command list all databases that are being synchronised and the last time they were synchronised *


stsadm -o sync -synctiming M:5
* This command set the synctiming to occur every 5 minutes, so we can check our progress with the sync *

stsadm -o sync -deleteolddatabases 0
* This command will clear out the sync information for ALL the databases, don't be alarmed it will be back soon *

Give it a few hours and periodically check your event log and run this command:

stsadm -o sync -listolddatabases 0
* The command lists the databases that are sync'd *

Problem fixed....