CORREGIR: La operación de sincronización de una replicación de mezcla agota el tiempo de espera en Microsoft SQL Server 2005

Se aplica a: Microsoft SQL Server 2005 Standard EditionMicrosoft SQL Server 2005 Developer EditionMicrosoft SQL Server 2005 Enterprise Edition

N.o de error: 50002786 (revisión SQL)
Microsoft distribuye las correcciones de Microsoft SQL Server 2005 como un archivo descargable. Dado que las correcciones son acumulativas, cada nueva versión contiene todas las revisiones y todas las correcciones de seguridad que se incluyeron con la versión anterior de SQL Server 2005.

Síntomas


Considere el siguiente escenario. En Microsoft SQL Server 2005, se configura una replicación de mezcla. A continuación, implemente la instantánea en un suscriptor. En este escenario, cuando se ejecuta el Agente de mezcla para sincronizar datos, se agota el tiempo de espera de la operación cuando el Agente de mezcla llama al sp_MSmakegeneration procedimiento almacenado. Además, cuando se ejecuta la siguiente instrucción en la base de datos replicada del suscriptor después de que se agota el tiempo de espera de la operación, la consulta devuelve algunos registros que son susceptibles al problema:
select * from dbo.MSmerge_genhistory gh where not exists       (select * from dbo.MSmerge_contents as mc       where mc.generation = gh.generation)and not exists      (select * from dbo.MSmerge_tombstone as ts       where ts.generation = gh.generation)and genstatus = 0union select * from dbo.MSmerge_genhistory gh where exists       (select * from dbo.MSmerge_contents as mc      where mc.generation = gh.generation      and mc.tablenick <> gh.art_nick)or exists      (select * from dbo.MSmerge_tombstone as ts      where ts.generation = gh.generation      and ts.tablenick <> gh.art_nick)and genstatus = 0

Causa


Este problema se produce porque hay una fila en la tabla MSmerge_genhistory que cumple una de las condiciones siguientes:
  • La generación no tiene cambios que se le asignen en la tabla MSmerge_tombstone o en la tabla MSmerge_contents.
  • Una o más filas que se asignan a la generación tienen un valor incorrecto en la columna tablenick de la tabla MSmerge_tombstone o en la tabla MSmerge_contents.
Esta situación hace que el procedimiento almacenado sp_MSmakegeneration entre en un bucle infinito.

Resolución


La corrección de este problema se publicó por primera vez en la actualización acumulativa 8. Para obtener más información acerca de cómo obtener este paquete de actualización acumulativa para SQL Server 2005 Service Pack 2, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
951217 Paquete de actualización acumulativa 8 para SQL Server 2005 Service Pack 2
Nota Dado que las compilaciones son acumulativas, cada nueva versión de corrección contiene todas las revisiones y todas las correcciones de seguridad que se incluyeron con la versión anterior de SQL Server 2005. Microsoft recomienda que considere la posibilidad de aplicar la versión de corrección más reciente que contiene esta revisión. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
937137 Las compilaciones de SQL Server 2005 que se publicaron después de que se publicara SQL Server 2005 Service Pack 2
Las revisiones de Microsoft SQL Server 2005 se crean para Service Pack de SQL Server específicos. Debe aplicar una revisión de SQL Server 2005 Service Pack 2 a una instalación de SQL Server 2005 Service Pack 2. De forma predeterminada, cualquier revisión que se proporciona en un Service Pack de SQL ServerSQL Server se incluye en el siguiente Service Pack de SQL ServerSQL Server .

Solución alternativa


Para evitar este problema, siga estos pasos:
  1. Cancele la operación de sincronización que no se ha completado.
  2. Ejecute las siguientes instrucciones para obtener la configuración de generation_leveling_threshold para la publicación:
    use <Publication Database Name>goexec sp_helpmergepublication @publication = '<Publication Name>'
    Anote el valor de la configuración de generation_leveling_threshold.
  3. Ejecute las instrucciones siguientes para deshabilitar la nivelación de generación y la fusión de generación:
    use <Publication Database Name>exec sp_changemergepublication @publication = '<Publication Name>', @property = 'generation_leveling_threshold', @value = 0
  4. Sincronizar datos para la publicación.
  5. Después de que la sincronización se haya completado correctamente, restablezca la configuración de generation_leveling_threshold al valor que anotó en el paso 2. Para ello, ejecute las siguientes instrucciones:
    use <Publication Database Name>exec sp_changemergepublication @publication = '<Publication Name>', @property = 'generation_leveling_threshold', @value = <Value>
Después de que usted utilice este método para trabajar alrededor de este problema, este problema ocurrirá otra vez si otro suscriptor intenta procesar la generación. Usted debe repetir estos pasos para todos los suscriptores que encuentren el problema.

Estado


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

Más información


Para obtener más información acerca de los archivos que se cambian y para obtener información acerca de los requisitos previos para aplicar el paquete de actualización acumulativa que contiene la revisión que se describe en este artículo de Microsoft Knowledge Base, haga clic en el número de artículo siguiente para ver el artículo en Microsoft Knowledge Base:
951217 Paquete de actualización acumulativa 8 para SQL Server 2005 Service Pack 2

Referencias


Para obtener más información acerca de la lista de compilaciones que están disponibles después de SQL Server Service Pack 2, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
937137 Las compilaciones de SQL Server 2005 que se publicaron después de que se publicara SQL Server 2005 Service Pack 2
Para obtener más información acerca del modelo de mantenimiento incremental para SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
935897 Un modelo de mantenimiento incremental está disponible en el equipo de SQL Server para entregar revisiones para los problemas notificados
Para obtener más información acerca de cómo obtener SQL Server 2005 Service Pack 2, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
913089 Cómo obtener el Service Pack más reciente para SQL Server 2005
Para obtener más información acerca de las nuevas características y las mejoras de SQL Server 2005 Service Pack 2, visite el siguiente sitio Web de Microsoft:Para obtener más información acerca del esquema de nomenclatura para las actualizaciones de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
822499 Nuevo esquema de nomenclatura para paquetes de actualización de software de Microsoft SQL Server
Para obtener más información acerca de la terminología de actualización de software, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684 Descripción de la terminología estándar utilizada para describir las actualizaciones de software de Microsoft