sp_mergecleanupmetadata (Transact-SQL)

Sólo debe utilizarse en topologías de replicación que incluyan servidores que ejecuten versiones de Microsoft SQL Server anteriores al Service Pack 1 de SQL Server 2000. sp_mergecleanupmetadata permite a los administradores limpiar los metadatos en las tablas del sistema MSmerge_genhistory, MSmerge_contents y MSmerge_tombstone. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicaciones.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

sp_mergecleanupmetadata [ [ @publication = ] 'publication' ]
    [ , [ @reinitialize_subscriber = ] 'reinitialize_subscriber' ]

Argumentos

  • [ @publication = ] 'publication'
    Es el nombre de la publicación. publication es de tipo sysname y su valor predeterminado es %, que limpia los metadatos de todas las publicaciones. La publicación debe existir, si se especifica explícitamente.

  • [ @reinitialize_subscriber = ] 'subscriber'
    Especifica si se reinicializa el suscriptor. subscriber es de tipo nvarchar(5), puede ser TRUE o FALSE y su valor predeterminado es TRUE. Si es TRUE, las suscripciones se marcan para reinicialización. Si es FALSE, las suscripciones no se marcan para reinicialización.

Valores de código de retorno

0 (correcto) o 1 (error)

Comentarios

sp_mergecleanupmetadata sólo debe utilizarse en topologías de replicación que incluyan servidores que ejecuten versiones de SQL Server anteriores al Service Pack 1 de SQL Server 2000. Las topologías que sólo incluyan el Service Pack 1 de SQL Server 2000 o posterior deben utilizar la limpieza de metadatos basada en la retención automática. Para obtener más información sobre la limpieza de metadatos, vea Cómo funciona la replicación de mezcla. Al ejecutar este procedimiento almacenado, se debe tener en cuenta que el archivo de registro necesita y puede llegar a aumentar en gran medida en el equipo donde se está ejecutando el procedimiento almacenado.

Nota de advertenciaAdvertencia

De manera predeterminada, después de ejecutar sp_mergecleanupmetadata, todas las suscripciones a publicaciones con metadatos almacenados en MSmerge_genhistory, MSmerge_contents y MSmerge_tombstone en el suscriptor se marcan para reinicialización, todos los cambios pendientes en el suscriptor se pierden y la instantánea actual se marca como obsoleta.

Nota

Si hay varias publicaciones en una base de datos y una de estas publicaciones utiliza un período de retención de la publicación infinito (@retention=0), la ejecución de sp_mergecleanupmetadata no limpiará los metadatos de seguimiento de cambios de la replicación de mezcla de la base de datos. Por ese motivo, debe utilizar con cuidado la retención infinita de publicaciones.

Al ejecutar este procedimiento almacenado, puede elegir si desea reinicializar los suscriptores estableciendo el parámetro @reinitialize_subscriber en TRUE (el valor predeterminado) o FALSE. Si se ejecuta sp_mergecleanupmetadata con el parámetro @reinitialize_subscriber establecido en TRUE, se vuelve a aplicar una instantánea en el suscriptor aunque la suscripción se haya creado sin una instantánea inicial (por ejemplo, si los datos de instantánea y el esquema se aplicaron manualmente o ya existían en el suscriptor). El valor FALSE de este parámetro se debe utilizar con precaución porque, si la publicación no se reinicializa, deberá asegurarse de que los datos del publicador y del suscriptor estén sincronizados.

Independientemente del valor de @reinitialize_subscriber, sp_mergecleanupmetadata produce un error si hay procesos de mezcla en curso que intentan cargar cambios en el publicador o un suscriptor de republicación en el momento de llamar al procedimiento almacenado.

Ejecutar sp_mergecleanupmetadata con @reinitialize_subscriber = TRUE:

  1. Se recomienda, aunque no es obligatorio, detener todas las actualizaciones a las bases de datos de publicaciones y suscripciones. Si las actualizaciones continúan, al reinicializar la publicación se perderán todas las actualizaciones realizadas en el suscriptor desde la última mezcla, pero se mantendrá la convergencia de datos.

  2. Ejecute una mezcla mediante el Agente de mezcla. Se recomienda utilizar la opción de línea de comandos del agente –Validate en cada suscriptor al ejecutar el Agente de mezcla. Si está ejecutando mezclas en modo continuo, vea Consideraciones especiales para mezclas en modo continuo más adelante en esta sección.

  3. Cuando finalicen todas las mezclas, ejecute sp_mergecleanupmetadata.

  4. Ejecute sp_reinitmergepullsubscription en todos los suscriptores que utilizan suscripciones de extracción anónimas o con nombre para garantizar la convergencia de los datos.

  5. Si está ejecutando mezclas en modo continuo, vea Consideraciones especiales para mezclas en modo continuo más adelante en esta sección.

  6. Vuelva a generar los archivos de instantáneas para todas las publicaciones de mezclas afectadas a cualquier nivel. Si intenta mezclar sin volver a generar primero la instantánea, recibirá un aviso para que vuelva a generar la instantánea.

  7. Realice una copia de seguridad de la base de datos de publicaciones. De lo contrario, se puede producir un error de mezcla después de restaurar la base de datos de publicaciones.

Ejecutar sp_mergecleanupmetadata con @reinitialize_subscriber = FALSE:

  1. Detenga todas las actualizaciones a las bases de datos de publicaciones y suscripciones.

  2. Ejecute una mezcla con el Agente de mezcla. Se recomienda utilizar la opción de línea de comandos del agente –Validate en cada suscriptor al ejecutar el Agente de mezcla. Si está ejecutando mezclas en modo continuo, vea Consideraciones especiales para mezclas en modo continuo más adelante en esta sección.

  3. Cuando finalicen todas las mezclas, ejecute sp_mergecleanupmetadata.

  4. Si está ejecutando mezclas en modo continuo, vea Consideraciones especiales para mezclas en modo continuo más adelante en esta sección.

  5. Vuelva a generar los archivos de instantáneas para todas las publicaciones de mezclas afectadas a cualquier nivel. Si intenta mezclar sin volver a generar primero la instantánea, recibirá un aviso para que vuelva a generar la instantánea.

  6. Realice una copia de seguridad de la base de datos de publicaciones. De lo contrario, se puede producir un error de mezcla después de restaurar la base de datos de publicaciones.

Consideraciones especiales para mezclas en modo continuo

Si está ejecutando mezclas en modo continuo, debe:

  • Detener el Agente de mezcla y realizar otra mezcla sin el parámetro -Continuous especificado.

  • Desactivar la publicación con sp_changemergepublication para asegurarse de que todas las mezclas en modo continuo que sondeen el estado de la publicación produzcan un error.

    EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'inactive'
    

Cuando finalice el paso 3 de la ejecución de sp_mergecleanupmetadata, reanude las mezclas en modo continuo en función de cómo las haya detenido. Realice una de las acciones siguientes:

  • Agregue de nuevo el parámetro –Continuous para el Agente de mezcla.

  • Vuelva a activar la publicación con sp_changemergepublication.

    EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'active'
    

Permisos

Sólo los miembros de la función fija de servidor sysadmin o de la función fija de base de datos db_owner pueden ejecutar sp_mergecleanupmetadata.

Para utilizar este procedimiento almacenado, el publicador debe estar ejecutando SQL Server 2000. Los suscriptores deben estar ejecutando el Service Pack 2 de SQL Server 2000 o Microsoft SQL Server 7.0.