Compartir a través de


Cómo la replicación de mezcla gestiona la caducidad de la suscripción y la limpieza de metadatos

Una suscripción a una publicación de fusión expira si no se ha sincronizado con el publicador dentro del período de retención de la publicación. El período de retención predeterminado es de 14 días. Se establece mediante los parámetros @retention y @retention_period_unit de sp_addmergepublication. @retention_period_unit exige que el nivel de compatibilidad de la publicación sea 90RTM o superior. En el caso de los suscriptores que ejecutan versiones anteriores de Microsoft SQL Server, @retention_period_unit siempre se establece en day. Para obtener más información sobre el nivel de compatibilidad, vea la sección "Nivel de compatibilidad para publicaciones de mezcla" del artículo Uso de varias versiones de SQL Server en una topología de replicación.

Cuando una suscripción expira, debe reinicializarse, ya que se quitan los metadatos de la suscripción. Para obtener más información, consulte Limpieza de metadatos. El trabajo de limpieza de suscripciones expiradas que se ejecuta en el publicador elimina las suscripciones que no se reinicializan. De forma predeterminada, esta tarea se ejecuta a diario y elimina todas las suscripciones push que no se hayan sincronizado durante el doble del periodo de retención de publicaciones. Por ejemplo:

  • Si una publicación tiene un período de retención de 14 días, una suscripción puede expirar si no se ha sincronizado en un plazo de 14 días.

    Una suscripción solo expira si se han producido cambios en los datos de la partición de esa suscripción. Por ejemplo, supongamos que un suscriptor recibe datos de cliente solo para los clientes de Alemania. Si el período de retención se establece en 14 días, la suscripción expira el día 14 solo si hubiera cambios en los datos del cliente de esa región en los últimos 14 días.

  • De 14 días a 27 días después de la última sincronización, se puede reinicializar la suscripción.

  • A los 28 días después de la última sincronización, el trabajo de limpieza de suscripciones expiradas elimina la suscripción. Si una suscripción de inserción caduca, esta se elimina por completo, pero las suscripciones de extracción no. Debe limpiar las suscripciones de extracción en el suscriptor. Para más información, consulte Delete a Pull Subscription.

Consideraciones para establecer el período de retención de la publicación

Tenga en cuenta las siguientes consideraciones al establecer el período de retención para las publicaciones de combinación:

  • La limpieza de los metadatos de la replicación de mezcla depende del período de retención de la publicación:

    • La replicación no puede limpiar los metadatos de las bases de datos de publicación y suscripción hasta que se alcance el período de retención. Tenga cuidado al especificar un valor alto para el período de retención, ya que puede afectar negativamente al rendimiento de la replicación. Debe usar una configuración inferior si puede predecir de forma confiable que todos los suscriptores se sincronizarán regularmente dentro de ese período de tiempo.

    • Es posible especificar que las suscripciones nunca expiren (un valor de 0 para @retention), pero no debe usar este valor, ya que los metadatos no se pueden limpiar.

  • El período de retención de cualquier republisher debe establecerse en un valor igual o menor que el período de retención establecido en el publicador original. Si usa asociados de sincronización alternativos, debe usar los mismos valores de retención de publicación para los publicadores y todos los asociados de sincronización alternativos. El uso de valores diferentes podría dar lugar a una novergencia. Si necesita cambiar el valor de retención de la publicación, reinicialice el Suscriptor para evitar la no convergencia de los datos.

  • Si, después de una limpieza, se aumenta el período de retención de la publicación y una suscripción intenta fusionarse con el Publicador (que ya eliminó los metadatos), la suscripción no expira debido al aumento del valor de retención. Sin embargo, el publicador no tiene suficientes metadatos para descargar los cambios al suscriptor, lo que conduce a una no convergencia.

Limpieza de metadatos

La limpieza de metadatos en la replicación de mezcla se realiza mediante el procedimiento almacenado sp_mergemetadataretentioncleanup. El momento de la limpieza se basa en el periodo de retención de la publicación. Cada vez que el agente de mezcla se ejecuta para una suscripción, llama al procedimiento de limpieza. El procedimiento quita los metadatos anteriores al período de retención de publicaciones de las siguientes tablas del sistema:

Todas las publicaciones de una base de datos de publicaciones usan estas tablas: si hay más de una publicación, el período de retención más largo siempre se usa para determinar cuándo se pueden quitar los metadatos.