KB2648158: el mensaje de error "el proceso no se pudo ejecutar" al establecer un valor distinto de cero en el parámetro MaxCmdsInTran del agente de lector del registro en SQL Server 2008 R2 o en SQL Server 2012

Se aplica a: Microsoft SQL Server 2008 R2 Service Pack 1

Microsoft distribuye las revisiones Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) o Microsoft SQL Server 2012 en un archivo descargable. Debido a que las correcciones son acumulativas, cada versión nueva contiene todas las revisiones y todas las actualizaciones de seguridad incluidas en la versión anterior de SQL Server 2008 R2 Service Pack 1 (SP1) o Microsoft SQL Server 2012.

Síntomas


Imagine la siguiente situación:
  • Se crean al menos dos publicaciones de replicación transaccional basadas en una base de datos en Microsoft SQL Server 2008 R2 o en Microsoft SQL Server 2012.
  • Cada publicación tiene al menos un artículo. Los artículos no se superponen y cada artículo pertenece a una sola publicación.
  • Establezca la propiedad @sync_method de las publicaciones como simultáneas.
  • Establezca la propiedad @immediate_sync de las publicaciones en true.
  • Establece el parámetro MaxCmdsInTran del agente de lector del registro en un valor distinto de cero.
  • Una de las publicaciones recibe muchas inserciones en una transacción.
  • Una vez confirmada la transacción, el agente de lector del registro comienza a procesar y dividir la transacción según el parámetro MaxCmdsInTran .
  • El agente de instantáneas de otra publicación comienza antes de que el agente de lector del registro finalice la tarea.
En este escenario, se produce un error en el agente de lector del registro y recibe el siguiente mensaje de error:
El proceso no pudo ejecutar ' sp_MSadd_replcmds ' en ' Server\Instance '. (Origen: MSSQLServer, número de error: 1007) No se puede insertar una fila de clave duplicada en el objeto ' DBO. MSrepl_commands ' con índice único ' ucMSrepl_commands '. (Origen: MSSQLServer, número de error: 1007)

Resolución


Información sobre la actualización acumulativa

SQL Server 2012

La corrección para este problema se publicó por primera vez en la actualización acumulativa 1 para SQL Server 2012. Para obtener más información acerca de este paquete de actualización acumulativa, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2679368 Paquete de actualización acumulativa 1 para SQL Server 2012
Nota Como las compilaciones son acumulativas, cada nueva versión de corrección contiene todas las revisiones y todas las revisiones de seguridad incluidas en la versión anterior de corrección de SQL Server 2012. Microsoft recomienda que considere la posibilidad de aplicar la versión de corrección más reciente que contenga este Hotfix. Si desea obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2692828 Las compilaciones de SQL Server 2012 que se publicaron después de que se publicó SQL Server 2012
Debe aplicar una revisión de SQL Server 2012 a una instalación de SQL Server 2012.

Paquete de actualización acumulativa 4 para SQL Server 2008 R2 SP1

La corrección para este problema se publicó por primera vez en la actualización acumulativa 4. Para obtener más información sobre cómo obtener este paquete de actualización acumulativa para SQL Server 2008 R2 SP1, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2633146 Paquete de actualización acumulativa 4 para SQL Server 2008 R2 SP1
Nota Como las compilaciones son acumulativas, cada nueva versión de corrección contiene todas las revisiones y todas las revisiones de seguridad incluidas en la versión anterior de corrección de SQL Server 2008 R2 SP1. Le recomendamos que considere la posibilidad de aplicar la versión de corrección más reciente que contenga este Hotfix. Si desea obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2567616 Las compilaciones de SQL Server 2008 R2 que se publicaron después de que se publicó SQL Server 2008 R2 SP1

Solución alternativa


Para resolver este problema, utilice uno de los métodos siguientes:
  • No establezca la propiedad @sync_method de las publicaciones en "concurrente" y no establezca la propiedad @immediate_sync de las publicaciones en "true".
  • Establezca el valor del parámetro MaxCmdsInTran en cero.

Estado


Microsoft ha confirmado que se trata de un problema de los productos de Microsoft recogidos en la sección "Se aplica a".