sp_mergecleanupmetadata (Transact-SQL)
Solo debe utilizarse en topologías de replicación que incluyan servidores que ejecuten versiones de Microsoft SQL Server anteriores a SQL Server 2000 Service Pack 1. sp_mergecleanupmetadata permite que los administradores limpien los metadatos de las tablas del sistema MSmerge_genhistory, MSmerge_contents y MSmerge_tombstone. Este procedimiento almacenado se ejecuta en el publicador en la base de datos de publicación.
Convenciones 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, con un valor predeterminado de %, que limpia los metadatos de todas las publicaciones. La publicación debe existir, si se especifica explícitamente.[ @reinitialize_subscriber = ] 'subscriber'
Especifica si se debe reinicializar 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 solo debe utilizarse en topologías de replicación que incluyan servidores que ejecuten versiones de SQL Server anteriores a SQL Server 2000 Service Pack 1. Las topologías que solo incluyan SQL Server 2000 Service Pack 1 o posterior deben usar la limpieza de metadatos basada en la retención automática. 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.
Advertencia
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:
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.
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.
Cuando finalicen todas las mezclas, ejecute sp_mergecleanupmetadata.
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.
Si está ejecutando mezclas en modo continuo, vea Consideraciones especiales para mezclas en modo continuo más adelante en esta sección.
Vuelva a generar los archivos de instantáneas para todas las publicaciones de combinación 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.
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:
Detenga todas las actualizaciones a las bases de datos de publicaciones y suscripciones.
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.
Cuando finalicen todas las mezclas, ejecute sp_mergecleanupmetadata.
Si está ejecutando mezclas en modo continuo, vea Consideraciones especiales para mezclas en modo continuo más adelante en esta sección.
Vuelva a generar los archivos de instantáneas para todas las publicaciones de combinación 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.
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
Solo los miembros del rol fijo de servidor sysadmin o del rol fijo 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.
Vea también
Referencia
MSmerge_genhistory (Transact-SQL)