Agregar y quitar artículos de publicaciones existentes

Se aplica a: SQL Server Azure SQL Managed Instance

Después de crear una publicación, se le pueden agregar y quitar artículos. Se pueden agregar artículos en cualquier momento, pero las acciones necesarias para quitar artículos dependen del tipo de replicación y del momento en que se quite el artículo.

agregar artículos

Para agregar un artículo, es necesario agregar el artículo a la publicación, crear una instantánea nueva para la publicación y sincronizar la suscripción para aplicar el esquema y los datos para el nuevo artículo.

Nota:

Si se agrega un artículo a una publicación de combinación y ya hay un artículo que depende de este nuevo artículo, debe especificar un orden de procesamiento para los dos artículos con el parámetro @processing_order de sp_addmergearticle y sp_changemergearticle. Considere el caso siguiente: publica una tabla pero no publica una función a la que hace referencia la tabla. Si no publica la función, la tabla no se puede crear en el suscriptor. Al agregar la función a la publicación: especifique el valor 1 para el parámetro @processing_order de sp_addmergearticley el valor 2 para el parámetro @processing_order de sp_changemergearticle; especifique el nombre de la tabla para el parámetro @article. Este orden de procesamiento garantiza que la función se cree en el suscriptor antes que la tabla que depende de él. Puede usar números distintos para cada artículo, siempre que el número de la función sea inferior al de la tabla.

  1. Agregue uno o más artículos con uno de estos métodos:

  2. Después de agregar un artículo a una publicación, debe crear una nueva instantánea para la publicación (y todas las particiones, si se trata de una publicación de combinación con filtros con parámetros). A continuación, el Agente de distribución o de mezcla copia el esquema y los datos del nuevo artículo al suscriptor (sin reinicializar la publicación completa).

  3. Una vez creada la instantánea, sincronice la suscripción para copiar el esquema y los datos para el nuevo artículo.

quitar artículos

Puede quitar artículos de una publicación en cualquier momento, pero debe tener en cuenta los siguientes comportamientos:

  • Al quitar un artículo de una publicación no se quita el objeto de la base de datos de publicaciones ni el objeto correspondiente de la base de datos de suscripciones. Use DROP <Objeto> para quitar estos objetos, si es necesario. Al quitar un artículo relacionado con otros artículos publicados a través de restricciones de clave extranjera, se recomienda quitar la tabla del suscriptor de forma manual o mediante la ejecución de un script a petición: especifique un script que incluya las instrucciones DROP <Objeto> apropiadas. Para más información, vea Ejecutar scripts durante la sincronización (programación de la replicación con Transact-SQL).

  • En el caso de las publicaciones de combinación con un nivel de compatibilidad igual o superior a 90RTM, puede quitar artículos en cualquier momento, pero necesitará una instantánea nueva. Además:

    • Si un artículo es el artículo primario de un filtro de combinación o de una relación de registros lógicos, necesitará quitar primero las relaciones; para esto, es necesario reinicializar.

    • Si un artículo tiene el último filtro con parámetros de una publicación, será necesario reinicializar las suscripciones.

  • En el caso de las publicaciones de combinación con un nivel de compatibilidad inferior a 90RTM, puede quitar artículos sin ningún tipo de consideraciones especiales antes de la sincronización inicial de las suscripciones. Si quita un artículo después de haber sincronizado una o varias suscripciones, deberá quitar, volver a crear y sincronizar estas suscripciones.

  • En las publicaciones de instantáneas o transaccionales, se pueden quitar artículos sin ninguna consideración especial antes de crear las suscripciones. Si quita un artículo después de haber creado una o más suscripciones, deberá quitar, volver a crear y sincronizar estas suscripciones. Para obtener más información sobre cómo quitar suscripciones, consulte Suscribirse a publicaciones y sp_dropsubscription (Transact-SQL). sp_dropsubscription permite quitar un único artículo de la suscripción, en lugar de toda la suscripción.

  1. Para quitar un artículo de una publicación, hay que quitar el artículo y crear una instantánea nueva para la publicación. Al quitar un artículo se invalida la instantánea actual; por lo tanto, es necesario crear una instantánea nueva.

  2. Después de quitar un artículo de una publicación, debe crear una nueva instantánea para la publicación (y todas las particiones, si se trata de una publicación de combinación con filtros con parámetros).

Como se indicó antes, en algunos casos es necesario quitar, volver a crear y sincronizar las suscripciones después de quitar un artículo. Para obtener más información, consulte Suscribirse a publicaciones y Sincronizar datos.

Nota:

SQL Server 2014 (12.x) Service Pack 2 o versiones posteriores y SQL Server 2016 (13.x) Service Pack 1 o versiones posteriores permiten quitar una tabla con el comando DROP TABLE de DDL para artículos que participan en la replicación transaccional. Si un DROP TABLE DDL es compatible con las publicaciones, la operación DROP TABLE quitará la tabla de la publicación y la base de datos. El agente de registro del LOG enviará un comando de limpieza de la base de datos de distribución de la tabla quitada y realizará la limpieza de los metadatos del publicador. Si el registro del LOG no ha procesado todas las entradas del registro que hacen referencia a la tabla quitada, omitirá los comandos nuevos que estén asociados a la tabla quitada. Los registros ya procesados se entregarán a la base de datos de distribución. Se pueden aplicar a la base de datos del suscriptor si el agente de distribución los procesa antes de que el registro del LOG limpie los artículos obsoletos (quitados). La configuración predeterminada para todas las publicaciones de replicación transaccional es no admitir DROP TABLE DDL. En KB 3170123 se incluyen más detalles sobre esta mejora.