Compartir a través de


Regeneración de procedimientos transaccionales personalizados para reflejar los cambios de esquema

De forma predeterminada, la replicación transaccional realiza todos los cambios de datos en los Suscriptores a través de procedimientos almacenados generados por procedimientos internos para cada artículo de tabla en la publicación. Los tres procedimientos (uno para inserciones, actualizaciones y eliminaciones) se copian en el suscriptor y se ejecutan cuando se replica una inserción, actualización o eliminación en el suscriptor. Cuando se realiza un cambio de esquema en una tabla en un publicador de SQL Server, la replicación vuelve a generar estos procedimientos automáticamente llamando al mismo conjunto de procedimientos de scripting internos para que los nuevos procedimientos coincidan con el nuevo esquema (no se admite la replicación de cambios de esquema para publicadores de Oracle).

También es posible especificar procedimientos personalizados para reemplazar uno o varios de los procedimientos predeterminados. Los procedimientos personalizados deben cambiarse si el cambio de esquema afectará al procedimiento. Por ejemplo, si un procedimiento hace referencia a una columna que se quita en un cambio de esquema, se deben quitar del procedimiento las referencias a esa columna. La replicación propaga un nuevo procedimiento personalizado a los suscriptores de dos maneras:

  • La primera opción es usar un procedimiento de scripting personalizado para reemplazar los valores predeterminados utilizados por la replicación:

    1. Al ejecutar sp_addarticle (Transact-SQL), asegúrese que el @schema_option 0x02 bit es cierto.

    2. Ejecute sp_register_custom_scripting (Transact-SQL) y especifique un valor de "insert", "update" o "delete" para el parámetro @type y el nombre del procedimiento de scripting personalizado para el parámetro @value.

    La siguiente vez que se lleve a cabo un cambio de esquema, la replicación llamará a este procedimiento almacenado para crear un script de la definición para el nuevo procedimiento almacenado personalizado definido por el usuario y, después, propagará el procedimiento a cada suscriptor.

  • La segunda opción consiste en usar un script que contenga una nueva definición de procedimiento personalizado:

    1. Al ejecutar sp_addarticle (Transact-SQL), establezca el @schema_option 0x02 bit en false para que la replicación no genere automáticamente procedimientos personalizados en el Suscriptor.

    2. Antes de cada cambio de esquema, cree un nuevo archivo de script y registre el script con replicación ejecutando sp_register_custom_scripting (Transact-SQL). Especifique un valor de "custom_script" para el parámetro @type y la ruta de acceso al script en el publicador para el parámetro @value.

    La siguiente vez que realice un cambio de esquema importante, este script se ejecutará en cada suscriptor en la misma transacción que el comando DDL. Una vez realizado el cambio de esquema, el script se elimina del registro. Debe volver a registrar el script para que se ejecute después de un cambio de esquema posterior.

Véase también

Especificar cómo se propagan los cambios para los artículos transaccionales
Realizar cambios de esquema en bases de datos de publicaciones