Controlar restricciones, identidades y desencadenadores con NOT FOR REPLICATION
Actualizado: 15 de septiembre de 2007
En algunos casos, es conveniente tratar de distinta manera la actividad del usuario y del agente en una topología de réplica. Por ejemplo, si un usuario inserta una fila en el publicador y esa inserción satisface una restricción CHECK en la tabla, es posible que no sea necesario exigir la misma restricción cuando un agente de réplica inserte la fila en el suscriptor. La opción NOT FOR REPLICATION permite especificar que los siguientes objetos de la base de datos se traten de manera distinta cuando un agente de réplica realiza una operación:
- Restricciones de clave externa
La restricción de clave externa no se aplica cuando un agente de réplica realiza una operación de inserción, actualización o eliminación. - Restricciones CHECK
La restricción CHECK no se aplica cuando un agente de réplica realiza una operación de inserción, actualización o eliminación. - Columnas de identidad
El valor de la columna de identidad no se incrementa cuando un agente de réplica realiza una operación de inserción. - Desencadenadores
El desencadenador no se ejecuta cuando un agente de réplica realiza una operación de inserción, actualización o eliminación.
Cuando se publica una tabla, las opciones de esquema controlan cómo se crean los objetos en la base de datos de suscripciones. Las opciones de esquema predeterminadas varían según el tipo de publicación; cuando las opciones se establecen para especificar que las restricciones FOREIGN KEY y las restricciones CHECK se crean en la base de datos de suscripciones, se establece la opción NOT FOR REPLICATION. La opción NOT FOR REPLICATION también se establece cuando se replican columnas de identidad en publicaciones de mezcla y transaccionales compatibles con suscripciones actualizables. Para obtener más información acerca de la réplica de las columnas de identidad, vea Replicar columnas de identidad.
En la mayoría de los casos, la configuración predeterminada es apropiada, pero se puede cambiar si una aplicación requiere un comportamiento distinto. El área principal que hay que considerar son los desencadenadores. Por ejemplo, si define un desencadenador de inserción con la opción NOT FOR REPLICATION establecida, todas las inserciones del usuario activarán el desencadenador, pero no lo harán las inserciones de los agentes de réplica. Considere un desencadenador que inserta datos en una tabla de seguimiento: cuando el usuario inserta originalmente la fila, es apropiado que el desencadenador se active e inserte una fila en la tabla de seguimiento; sin embargo, no debería activarse cuando los datos se replican en el suscriptor, ya que se insertaría una fila innecesaria en la tabla de seguimiento.
Para especificar la opción NOT FOR REPLICATION
La opción NOT FOR REPLICATION se puede especificar de las siguientes formas:
- Por medio de opciones de esquema de réplica. Para obtener más información, vea Cómo especificar opciones de esquema (SQL Server Management Studio) y How to: Specify Schema Options (Replication Transact-SQL Programming).
- Directamente en la sintaxis Transact-SQL o en Microsoft SQL Server Management Studio en los siguientes casos:
- Al crear o modificar un objeto en la base de datos de publicaciones.
- Al crear o modificar un objeto en la base de datos de suscripciones. Por lo general, los objetos sólo se crean manualmente (y no mediante la réplica) cuando se inicializa una suscripción sin una instantánea.
Para obtener más información, vea: - CREATE TABLE (Transact-SQL), ALTER TABLE (Transact-SQL), CREATE TRIGGER (Transact-SQL) y ALTER TRIGGER (Transact-SQL)
- Cómo deshabilitar restricciones FOREIGN KEY durante la réplica (Visual Database Tools)
- Cómo deshabilitar restricciones CHECK durante la réplica (Visual Database Tools)
Vea también
Conceptos
Consideraciones para todos los tipos de réplica
Ayuda e información
Obtener ayuda sobre SQL Server 2005
Historial de cambios
Versión | Historial |
---|---|
15 de septiembre de 2007 |
|