Replication errors in System Center 2012 R2 Configuration Manager

Replication errors in System Center 2012 R2 Configuration Manager

  • Comments 7
  • Likes

Issue

Several customers reported that child primary sites were entering maintenance mode after upgrading the central administration site from System Center 2012 Configuration Manager Service Pack 1 (SP1) with CU2 or CU3 to System Center 2012 R2 Configuration Manager. Entries similar to the following were recorded in the RcmCtrl.log file at child primary sites:

ERROR: Exception message: [A .NET Framework error occurred during execution of user-defined routine or aggregate "spModifyGlobalTable": ~~System.Data.SqlClient.SqlException: ALTER TABLE only allows columns to be added that can contain nulls, or have a DEFAULT definition specified, or the column being added is an identity or timestamp column, or alternatively if none of the previous conditions are satisfied the table must be empty to allow addition of this column. Column 'MessageTime' cannot be added to non-empty table 'PullDPResponse' because it does not satisfy these conditions.~~System.Data.SqlClient.SqlException: ~~   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)~~   at System.Data.SqlClient.SqlDataReaderSmi.InternalNextResult(Boolean ignoreNonFatalMessages)~~   at System.Data.SqlClient.SqlDataReaderSmi.NextResult()~~   at System.Data.SqlClient.SqlCommand.RunExecuteReaderSmi(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream)~~   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)~~   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)~~   at System.Data.SqlClient.SqlCommand.ExecuteScalar()~~   at Microsoft.ConfigurationManager.DataReplicationService.DatabaseOperation.ExecuteScalar(String commandText, List`1 commandParameters)~~   at Microsoft.ConfigurationManager.DataReplicationService.GlobalSchemaChanges.ApplyChangesToTable(DrsLogging drsLogging, String tableName, String tableOwner, List`1 columns, DatabaseOperation databaseOperation, String procedureName)~~   at Microsoft.ConfigurationManager.DataReplicationService.GlobalSchemaChanges.CreateOrUpdateGlobalTable(DrsLogging drsLogging, String tableName, List`1 columns, List`1 triggers, Int32 replicationId, DatabaseOperation databaseOperation, String procedureName)~~   at Microsoft.ConfigurationManager.DataRe...]                SMS_REPLICATION_CONFIGURATION_MONITOR

This error occurs because the PullDPResponse table, which was added with Configuration Manager SP1 with CU2 or CU3, does not contain the MessageTime column that was later introduced with System Center 2012 R2 Configuration Manager. This column did not allow for NULL entries, and therefore, replication would fail if there was data in the table at the Configuration Manager 2012 SP1 child site prior to the upgrade. When an update was started on the child site, the Prerequisite Checker failed because replication between the central administration site and child primary site was not active.

Resolution

This issue has been resolved for all new System Center 2012 R2 Configuration Manager upgrades as of November 14, 2013. New installations or upgrades will download updated setup prerequisite files.

Customers that are working with site servers not connected directly to the Internet should use the Configuration Manager Setup Downloader. More information is available in the Setup Download section of Install Sites and Create a Hierarchy for Configuration Manager topic on TechNet.

Existing hierarchies that have already upgraded the central administration site but cannot upgrade child primary site(s) can be repaired by running the following SQL script against the site database at the child primary site(s):

IF NOT EXISTS(select * from sys.columns where [name] = N''MessageTime'' and [object_id] = OBJECT_ID(N''PullDPResponse''))

    BEGIN

        ALTER TABLE PullDPResponse ADD MessageTime datetime NOT NULL

        CONSTRAINT PullDPResponse_MessageTime DEFAULT (GetUTCDate())

    END

IF NOT EXISTS (SELECT * FROM sys.default_constraints where name = ''PullDPResponse_MessageTime'')

    BEGIN

        ALTER TABLE PullDPResponse ADD CONSTRAINT PullDPResponse_MessageTime DEFAULT (GetUTCDate()) FOR MessageTime

    END

 
--Brian Huneycutt

This posting is provided "AS IS" with no warranties and confers no rights.

 

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment
  • Hi,

    Can anyone help me to achieve this.

    Hope you doing well.

    I am facing an issue and am not able to find solution to resolve that issue.

    I am running SCCM 2012 SP 1 server in my production environment. I am having more than 250 Desktop running windows 7 sp1 with two volumes C: and D:. We are using D partition for user data.

    Challenge is, we are planning to migrate to windows 8, which means we want to install windows 8 through SCCM 2012, but we do not want to delete or touch D partition, because it has critical and huge data on this.

    Please suggest a way, how to achieve this challenge. I tried a lot, but could not get succeed.

  • Hi,

    Hope you doing well.

    I am facing an issue and am not able to find solution to resolve that issue.

    I am running SCCM 2012 SP 1 server in my production environment. I am having more than 250 Desktop running windows 7 sp1 with two volumes C: and D:. We are using D partition for user data.

    Challenge is, we are planning to migrate to windows 8, which means we want to install windows 8 through SCCM 2012, but we do not want to delete or touch D partition, because it has critical and huge data on this.

    Please suggest a way, how to achieve this challenge. I tried a lot, but could not get succeed.