Microsoft distributes Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) or Microsoft SQL Server 2012 fixes in one downloadable file. Because the fixes are cumulative, each new release contains all the hotfixes and all the security updates that were included with the previous SQL Server 2008 R2 Service Pack 1 (SP1) or Microsoft SQL Server 2012 update release.
Symptoms
Consider the following scenario:
-
You create at least two transactional replication publications based on one database in Microsoft SQL Server 2008 R2 or in Microsoft SQL Server 2012.
-
Each publication has at least one article. The articles do not overlap, and each article belongs to only one publication.
-
You set the @sync_method property of the publications to Concurrent.
-
You set the @immediate_sync property of the publications to True.
-
You set the MaxCmdsInTran parameter of the Log Reader Agent to a nonzero value.
-
One of the publications receives many inserts in one transaction.
-
After the transaction is committed, the Log Reader Agent starts to process and split the transaction according to the MaxCmdsInTran parameter.
-
The Snapshot Agent on another publication starts before the Log Reader Agent finishes the task.
In this scenario, the Log Reader Agent fails, and you receive the following error message:
The process could not execute 'sp_MSadd_replcmds' on 'server\instance'.
(Source: MSSQLServer, Error number: 1007) Cannot insert duplicate key row in object 'dbo.MSrepl_commands' with unique index 'ucMSrepl_commands'. (Source: MSSQLServer, Error number: 1007)Resolution
Cumulative update information
SQL Server 2012
The fix for this issue was first released in Cumulative Update 1 for SQL Server 2012. For more information about this cumulative update package, click the following article number to view the article in the Microsoft Knowledge Base:
2679368 Cumulative update package 1 for SQL Server 2012Note Because the builds are cumulative, each new fix release contains all the hotfixes and all the security fixes that were included with the previous SQL Server 2012 fix release. Microsoft recommends that you consider applying the most recent fix release that contains this hotfix. For more information, click the following article number to view the article in the Microsoft Knowledge Base:
2692828 The SQL Server 2012 builds that were released after SQL Server 2012 was released You must apply a SQL Server 2012 hotfix to an installation of SQL Server 2012.
Cumulative update package 4 for SQL Server 2008 R2 SP1
The fix for this issue was first released in Cumulative Update 4. For more information about how to obtain this cumulative update package for SQL Server 2008 R2 SP1, click the following article number to view the article in the Microsoft Knowledge Base:
2633146 Cumulative update package 4 for SQL Server 2008 R2 SP1Note Because the builds are cumulative, each new fix release contains all the hotfixes and all the security fixes that were included with the previous SQL Server 2008 R2 SP1 fix release. We recommend that you consider applying the most recent fix release that contains this hotfix. For more information, click the following article number to view the article in the Microsoft Knowledge Base:
2567616 The SQL Server 2008 R2 builds that were released after SQL Server 2008 R2 SP1 was released
Workaround
To work around this issue, use one of the following methods:
-
Do not set the @sync_method property of the publications to "concurrent" and do not set the @immediate_sync property of the publications to "true."
-
Set the value of the MaxCmdsInTran parameter to zero.
Status
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.