The ConfigMgr 2012 R2 upgrade from ConfigMgr 2012 SP1 CU3 will fail if you have Pull DPs in your environment.


Hi Folks,

Just sharing one of the upgrade issues that we have when we upgrade to R2 from ConfigMgr 2012 CU3 when pull dps are there in the environment.

 

Note: We have fixed the issue in our latest R2 bits. For more information:

http://blogs.technet.com/b/configmgrteam/archive/2013/11/26/replication-errors-in-system-center-2012-r2-configuration-manager.aspx

 

Issue:

=====

CAS and primaries went to the Maintenance mode after the R2 upgrade on the CAS.

 

Environment:

=========

CAS (Upgraded to R2)

|

PR1, PR2(Child primaries on SP1 CU3)

 

Assessment:

===========

 

From SpDiagDrs All the three sites (CAS and primaries) are in maintenance mode.

CAS has been upgraded from SP1 CU3 to R2.

 

From the RCMCtrl on the Primaries:


ERROR: Received unhandled SQL exception, printing info and throwing it again. This will be retried in next cycle.                SMS_REPLICATION_CONFIGURATION_MONITOR            10/24/2013 10:01:49 AM               3632 (0x0E30)

SqlException number: [6522]      SMS_REPLICATION_CONFIGURATION_MONITOR            10/24/2013 10:01:49 AM               3632 (0x0E30)

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            10/24/2013 10:01:49 AM               3632 (0x0E30)

Exception stack trace: [   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.SqlDataReader.ConsumeMetaData()~~   at System.Data.SqlClient.SqlDataReader.get_MetaData()~~   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.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)~~   at System.Data.SqlClient.SqlCommand.ExecuteScalar()~~   at Microsoft.ConfigurationManager.ServerComponents.DatabaseOperation.ExecuteScalar(String commandText, List`1 commandParameters, Int32 timeout)~~   at Microsoft.ConfigurationManager.ReplicationConfigurationAndMonitoring.DrsUtility.ApplyGlobalSchemaChanges(Nullable`1 replicationId, SiteData siteData, ReplicationPatterns replicationPattern)~~   at Microsoft.ConfigurationManager.ReplicationConfigurationAndMonitoring.ReplicationEndpointDrs.ProcessInitRequests(SqlConnection sqlConnection)~~   at Microsoft.ConfigurationManager.ReplicationConfigurationAndMonitoring.ReplicationEndpointDrs.Configure(SqlConnection sqlConnection)~~   at Microsoft.ConfigurationManager.ReplicationConfigurationAndMonitoring.ReplicationConfigureAndMonitor.ProcessReplicationGroup(SqlConnection sqlConnection, SiteData siteData, ReplicationGroup replicationGroup)~~   at Microsoft.ConfigurationManager.ReplicationConfigurationAndMonitoring.ReplicationConfigureAndMonitor.ConfigureReplication(SqlConnection sqlConnection)~~   at Microsoft.ConfigurationManager.ReplicationConfigurationAndMonitoring.ReplicationConfigureAndMonitor.Configure()]                SMS_REPLICATION_CONFIGURATION_MONITOR            10/24/2013 10:01:49 AM               3632 (0x0E30)

STATMSG: ID=7832 SEV=E LEV=M SOURCE="SMS Server" COMP="SMS_REPLICATION_CONFIGURATION_MONITOR" SYS=US1-HOWCMSA-S.US1-OOG-S.ADS SITE=USA PID=4304 TID=3632 GMTDATE=Thu Oct 24 15:01:49.075 2013 ISTR0="System.Data.SqlClient.SqlException: 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 h" ISTR1="" ISTR2="" ISTR3="" ISTR4="" ISTR5="" ISTR6="" ISTR7="" ISTR8="" ISTR9="" NUMATTRS=0   SMS_REPLICATION_CONFIGURATION_MONITOR            10/24/2013 10:01:49 AM               3632 (0x0E30)

Releasing sqlConnection System.Data.SqlClient.SqlConnection  SMS_REPLICATION_CONFIGURATION_MONITOR                10/24/2013 10:01:49 AM               3632 (0x0E30)

Failed to call Configure of RCM. error = Unknown error 0x80131904         SMS_REPLICATION_CONFIGURATION_MONITOR                10/24/2013 10:01:49 AM               3632 (0x0E30)


The summary is


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.


Checked and found that the column 'message time' has been added lately in R2 and not there in SP1. As there is data in the table this is not getting updated.

Note: So if there is data in the PullDPResponse table the upgrade to R2 will cause this issue. We know if that the primaries are upgraded to R2 this will fix but then the new feature will not allow the upgrade if the sites are in maintenance. Also if we are upgrading from SP1 without CU2 or CU3 this issue should not come as the PullDPResponse was introduced later.

 

 

Hope it helps !!

Umair Khan

Support Escalation Engineer | System Center Configuration Manager

Comments (9)

  1. rgood says:

    Thanks for comments.Hope to sort out this mess.computer being slow .losing patients

  2. DrB says:

    Has anyone tried taking a backup of the DB and deleting the contents of that table in order to be able to proceed with the update?… yes yes not supported blah blah =)

  3. DrB says:

    Ok well for anyone willing to throw caution to the wind (Or maybe just backup your DB)… Wiping the contents of dbo.PullDPResponse will allow the update to add the additional columns and complete so you can proceed with upgrading your other sites.

  4. SQLGuy says:

    @DRB: Yes that would work. Also other option is to drop and recreate the PullDPResponse table from the CAS script. The replication of the global data will later bring in the records there.

  5. Andrew Lukaszewski says:

    Any update on this?  I have a customer wanting to perform an R2 upgrade and they have a lot of packages on a lot of Pull DP's and I don't want to risk hitting the database.  Any workaround suggested by Microsoft?

  6. Andrew Lukaszewski says:

    P.S. – Is this issue only present where a CAS is used in the environment?

  7. This is fixed in the latest bits of the R2. Make sure you get the latest R2 bits. Also this is not CAS specific.

  8. Andrew Lukaszewski says:

    When you say 'get the latest R2 bits' – what do you mean exactly?  Download the R2 iso again?  Make sure I download a fresh set of components during the R2 upgrade?  Thanks.

Skip to main content