Compartir a través de


sp_mergecleanupmetadata (Transact-SQL)

Se aplica a: SQL Server

Solo se debe usar en topologías de replicación que incluyan servidores que ejecutan versiones de SQL Server antes de SQL Server 2000 (8.x) Service Pack 1. sp_mergecleanupmetadata permite a los administradores limpiar metadatos en las tablas del MSmerge_genhistorysistema , MSmerge_contentsy MSmerge_tombstone . Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicación.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

[ @publication = ] N'publication'

Nombre de la publicación. @publication es 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 = ] N'reinitialize_subscriber'

Especifica si se debe reinicializar el suscriptor. @reinitialize_subscriber es nvarchar(5), con un valor predeterminado de true.

  • Si truees , las suscripciones se marcan para reinicialización.
  • Si falsees , las suscripciones no están marcadas para reinicialización.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Comentarios

sp_mergecleanupmetadata solo debe usarse en topologías de replicación que incluyan servidores que ejecutan versiones de SQL Server antes de SQL Server 2000 (8.x) Service Pack 1. Las topologías que incluyen solo SQL Server 2000 (8.x) Service Pack 1 o posterior deben usar la limpieza automática de metadatos basados en retención. 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.

Después sp_mergecleanupmetadata de ejecutarse, de forma predeterminada, todas las suscripciones de los suscriptores de publicaciones que tienen metadatos almacenados en MSmerge_genhistoryMSmerge_contents y MSmerge_tombstone se marcan para reinicialización, se pierden los cambios pendientes en el suscriptor y la instantánea actual está marcada como obsoleta.

Si hay varias publicaciones en una base de datos y cualquiera de esas publicaciones usa un período de retención de publicación infinito (@retention es 0), la ejecución sp_mergecleanupmetadata no limpia los metadatos de seguimiento de cambios de replicación de mezcla para 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 se reinicializan los suscriptores estableciendo el parámetro true @reinitialize_subscriber en (valor predeterminado) o false. Si sp_mergecleanupmetadata se ejecuta con el parámetro @reinitialize_subscriber establecido trueen , se vuelve a aplicar una instantánea en el suscriptor incluso si la suscripción se creó 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). Establecer el parámetro en false debe usarse con precaución, ya que si la publicación no se reinicializa, debe asegurarse de que los datos del publicador y el suscriptor estén sincronizados.

Independientemente del valor de @reinitialize_subscriber, sp_mergecleanupmetadata se produce un error si hay procesos de combinación en curso que intentan cargar cambios en un publicador o en un suscriptor de nueva publicación en el momento en que se invoca el procedimiento almacenado.

Ejecute sp_mergecleanupmetadata con @reinitialize_subscriber = N'true'

  1. Se recomienda, pero no es necesario, que detenga todas las actualizaciones de las bases de datos de publicación y suscripción. 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 con el Agente de mezcla. Se recomienda usar la opción de línea de comandos -Validate agent en cada suscriptor al ejecutar el Agente de mezcla. Si está ejecutando combinaciones de modo continuo, consulte Consideraciones especiales para las combinaciones de modo continuo más adelante en esta sección.

  3. Una vez completadas todas las combinaciones, ejecute sp_mergecleanupmetadata.

  4. Ejecute sp_reinitmergepullsubscription en todos los suscriptores mediante una suscripción de extracción con nombre o anónima para garantizar la convergencia de datos.

  5. Si está ejecutando combinaciones de modo continuo, consulte Consideraciones especiales para las combinaciones de modo continuo más adelante en esta sección.

  6. 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.

  7. Realice una copia de seguridad de la base de datos de publicaciones. Si no se hace, se puede producir un error de mezcla después de restaurar la base de datos de publicación.

Ejecute sp_mergecleanupmetadata con @reinitialize_subscriber = N'false'

  1. Detenga todas las actualizaciones de las bases de datos de publicación y suscripción.

  2. Ejecute una mezcla con el Agente de mezcla. Se recomienda usar la -Validate opción de línea de comandos del agente en cada suscriptor al ejecutar el Agente de mezcla. Si está ejecutando combinaciones de modo continuo, consulte Consideraciones especiales para las combinaciones de modo continuo más adelante en este artículo.

  3. Una vez completadas todas las combinaciones, ejecute sp_mergecleanupmetadata.

  4. Si está ejecutando combinaciones de modo continuo, consulte Consideraciones especiales para las combinaciones de modo continuo más adelante en esta sección.

  5. 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.

  6. Realice una copia de seguridad de la base de datos de publicaciones. Si no se hace, se puede producir un error de mezcla después de restaurar la base de datos de publicación.

Consideraciones especiales para las combinaciones de modo continuo

Si ejecuta combinaciones de modo continuo, debe:

  • Detenga el Agente de mezcla y, a continuación, realice otra combinación sin el -Continuous parámetro especificado.

  • Desactive la publicación con sp_changemergepublication para asegurarse de que se produzca un error en las combinaciones en modo continuo que sondeen el estado de la publicación.

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

Cuando haya completado el paso 3 de ejecución sp_mergecleanupmetadata, reanude las combinaciones del modo continuo en función de cómo las detuvo. Opciones:

  • Vuelva a agregar 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 db_owner rol fijo de base de datos pueden ejecutar sp_mergecleanupmetadata.

Para usar este procedimiento almacenado, el publicador debe ejecutar SQL Server 2000 (8.x). Los suscriptores deben ejecutar SQL Server 2000 (8.x) o SQL Server 7.0, Service Pack 2.