Cómo establecer el método de propagación para cambios de datos en artículos transaccionales (programación de la replicación con Transact-SQL)

De forma predeterminada, la replicación genera automáticamente los procedimientos almacenados usados para propagar los cambios a los suscriptores. La replicación transaccional le permite controlar cómo los cambios se propagan del publicador a los suscriptores; este método de propagación se puede establecer mediante programación cuando un artículo se crea y se cambia después con los procedimientos almacenados de la replicación.

Nota

Puede especificar un método de propagación diferente para cada tipo de operación (inserción, actualización o eliminación) DML (lenguaje de manipulación de datos) que se produce en una fila de datos publicados.

Para obtener más información, vea Especificar cómo se propagan los cambios para los artículos transaccionales.

Para crear un artículo que use comandos Transact-SQL para propagar cambios de datos

  • En la base de datos de publicación del publicador, ejecute sp_addarticle. Especifique el nombre de la publicación a la que pertenece el artículo para @publication, un nombre de artículo para @article, el objeto de base de datos que se publica para @source_objecty un valor de SQL para por lo menos uno de los parámetros siguientes:

    • @ins_cmd - controla la replicación de los comandos INSERT.

    • @upd_cmd - controla la replicación de los comandos UPDATE.

    • @del_cmd - controla la replicación de los comandos DELETE.

    Nota

    Al especificar un valor de SQL para cualquiera de los parámetros anteriores, los comandos de ese tipo se replicarán al suscriptor como el comando Transact-SQL correspondiente.

    Para obtener más información, vea Cómo definir un artículo (programación de la replicación con Transact-SQL).

Para crear un artículo que no propaga los cambios de datos

  • En la base de datos de publicación del publicador, ejecute sp_addarticle. Especifique el nombre de la publicación a la que pertenece el artículo para @publication, un nombre de artículo para @article, el objeto de base de datos que se publica para @source_objecty un valor de NONE para por lo menos uno de los parámetros siguientes:

    • @ins_cmd - controla la replicación de los comandos INSERT.

    • @upd_cmd - controla la replicación de los comandos UPDATE.

    • @del_cmd - controla la replicación de los comandos DELETE.

    Nota

    Al especificar un valor de NONE para cualquiera de los parámetros anteriores, los comandos de ese tipo no se replicarán al suscriptor.

    Para obtener más información, vea Cómo definir un artículo (programación de la replicación con Transact-SQL).

Para crear un artículo con procedimientos almacenados personalizados modificados por el usuario

  1. En la base de datos de publicación del publicador, ejecute sp_addarticle. Especifique el nombre de la publicación a la que pertenece el artículo para @publication, un nombre de artículo para @article, el objeto de base de datos que se publica para @source_object, un valor para la máscara de bits @schema_option que contiene el valor 0x02 (habilita la generación automática de procedimientos almacenados personalizados) y por lo menos uno de los parámetros siguientes:

    • @ins_cmd - especifica un valor de CALL sp_MSins_article_name, en el que article_name es el valor especificado para @article.

    • @del_cmd - especifica un valor de CALL sp_MSdel_article_name o XCALL sp_MSdel_article_name, en el que article_name es el valor especificado para @article.

    • @upd_cmd - especifica un valor de SCALL sp_MSupd_article_name, CALL sp_MSupd_article_name, XCALL sp_MSupd_article_name o MCALL sp_MSupd_article_name, en el que article_name es el valor especificado para @article.

    Nota

    Para cada uno de los parámetros de comandos anteriores, puede especificar su propio nombre para los procedimientos almacenados que genera la replicación.

    Nota

    Para obtener más información acerca de la sintaxis de CALL, SCALL, XCALL y MCALL, vea Especificar cómo se propagan los cambios para los artículos transaccionales.

    Para obtener más información, vea Cómo definir un artículo (programación de la replicación con Transact-SQL).

  2. Después de generar la instantánea, navegue a la carpeta de instantáneas de la publicación a la que pertenece este artículo y busque el archivo .sch con el mismo nombre que el artículo. Abra este archivo con Bloc de notas.exe, busque el comando CREATE PROCEDURE para los procedimientos almacenados de inserción, actualización o eliminación, y edite la definición del procedimiento para proporcionar una lógica personalizada para propagar los cambios de datos. Para obtener más información, vea Especificar cómo se propagan los cambios para los artículos transaccionales.

    Nota de advertenciaAdvertencia

    Tenga cuidado al editar cualquiera de los archivos de instantáneas generados por la replicación. Debe probar la lógica personalizada en los procedimientos almacenados personalizados y proporcionar compatibilidad para ella; Microsoft no proporciona compatibilidad para la lógica personalizada.

Para crear un artículo con script personalizado en los procedimientos almacenados personalizados y propagar los cambios de datos

  1. En la base de datos de publicación del publicador, ejecute sp_addarticle. Especifique el nombre de la publicación a la que pertenece el artículo para @publication, un nombre de artículo para @article, el objeto de base de datos que se publica para @source_object, un valor para la máscara de bits @schema_option que contiene el valor 0x02 (habilita la generación automática de procedimientos almacenados personalizados) y por lo menos uno de los parámetros siguientes:

    • @ins_cmd - especifica un valor de CALL sp_MSins_article_name, en el que article_name es el valor especificado para @article.

    • @del_cmd - especifica un valor de CALL sp_MSdel_article_name o XCALL sp_MSdel_article_name, en el que article_name es el valor especificado para @article.

    • @upd_cmd - especifica un valor de SCALL sp_MSupd_article_name, CALL sp_MSupd_article_name, XCALL sp_MSupd_article_name y MCALL sp_MSupd_article_name, en el que article_name es el valor especificado para @article.

    Nota

    Para cada uno de los parámetros de comandos anteriores, puede especificar su propio nombre para los procedimientos almacenados que genera la replicación.

    Nota

    Para obtener más información acerca de la sintaxis de CALL, SCALL, XCALL y MCALL, vea Especificar cómo se propagan los cambios para los artículos transaccionales.

    Para obtener más información, vea Cómo definir un artículo (programación de la replicación con Transact-SQL).

  2. En la base de datos de publicación del publicador, use la instrucción ALTER PROCEDURE para modificar sp_scriptpublicationcustomprocs de modo que devuelva un script CREATE PROCEDURE para los procedimientos almacenados personalizados de inserción, actualización y eliminación. Para obtener más información, vea Especificar cómo se propagan los cambios para los artículos transaccionales.

    Nota de advertenciaAdvertencia

    Se debe tener cuidado al editar sp_scriptpublicationcustomprocs; debe probar y proporcionar compatibilidad para la lógica personalizada de este procedimiento almacenado. Microsoft no proporciona compatibilidad con la lógica personalizada o los cambios realizados en los procedimientos almacenados del sistema.

Para cambiar el método de propagar los cambios para un artículo existente

  1. En la base de datos de publicación del publicador, ejecute sp_changearticle. Especifique @publication, @article, un valor de ins_cmd, upd_cmdo del_cmd para @propertyy el método de propagación adecuado para @value.

  2. Repita el paso 1 para cada método de propagación que se va a cambiar.