Instrucciones UPDATE pueden ser replicadas como parejas DELETE/INSERT

Seleccione idioma Seleccione idioma
Id. de artículo: 238254 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Resumen

Si se actualiza cualquier columna que forma parte de una restricción unique, SQL Server implementa la actualización como una "actualización diferida," lo que significa como un par de DELETE / INSERT operaciones. Este "actualización diferida" hace que la replicación para enviar un par de DELETE / INSERT instrucciones para los suscriptores. También hay otras situaciones que podrían causar una actualización diferida. Por tanto, debe lógica empresarial que implementar en los desencadenadores UPDATE o en procedimientos almacenados personalizados en el suscriptor también se incluyen en DELETE / INSERT desencadenadores o procedimientos almacenados personalizados.

Más información

El comportamiento predeterminado en la duplicación transaccional es utilizar INSERT , UPDATE y DELETE procedimientos almacenados personalizados para aplicar los cambios en los suscriptores.

las instrucciones INSERT realizadas en el publicador se aplican a los suscriptores a través de una llamada de procedimiento INSERT almacenados. De forma similar, una instrucción DELETE se aplica a través de una llamada de procedimiento DELETE almacenados.

Sin embargo, cuando una instrucción UPDATE se ejecuta como una "diferida actualización", los lugares de agente de lector del registro un par de DELETE / INSERT almacenados procedimiento llama a en la base de datos que se aplicará a los suscriptores en lugar de una actualización de distribución almacena la llamada a procedimiento. Por ejemplo, suponga que tiene una tabla de publicación, denominada Table1, con estas tres columnas:
  • col1 int
  • col2 int
  • col3 varchar (30).
La restricción unique sólo en Table1 se define en col1 a través de una restricción de clave principal. Suponga que tiene un registro (1,1, "Dallas').

Cuando se ejecuta este código:
UPDATE TABLE1 set col1 = 3 where col2 = 'Dallas'
				
la instrucción UPDATE se implementa mediante SQL Server como un par de DELETE / instrucciones INSERT desde el están actualizando col1, que tiene definido un índice único. Por lo tanto, el lector del registro coloca un par de DELETE / INSERT llamadas en la base de datos de distribución. Esto puede afectar la lógica empresarial que está presente en los desencadenadores o procedimientos almacenados personalizados en el suscriptor. Debe incorporar la lógica empresarial adicional en DELETE y INSERT desencadenadores o procedimientos almacenados para controlar esta situación.

Si prefiere utilizar lógica única y desea que todos los comandos UPDATE replicados como DELETE / INSERT pares, puede habilitar una marca de seguimiento como se describe en este artículo de Knowledge Base:
160181INF: Marca de seguimiento replicar UPDATE como par DELETE/INSERT
Además, si utiliza un filtro horizontal de la publicación y la fila actualizada no cumple una condición de filtro, sólo una llamada DELETE a un procedimiento se envía a los suscriptores. Si la fila actualizada previamente no cumple la condición de filtro pero cumple la condición después de la actualización, sólo la llamada INSERT al procedimiento se envía a través del proceso de replicación.

En el ejemplo anterior, suponga que tiene también un filtro horizontal definido en Table1: donde col2 = 'Dallas'. Si ejecuta este código:
UPDATE table1 set col2 = 'New York' where col1 = 3
				
los lugares de sólo de agente de lector del Registro DELETE almacena la llamada de procedimiento al aplicarse a los suscriptores desde la fila actualizada no cumple los criterios de filtro horizontal.

Ahora, si ejecuta este código:
UPDATE table1 set col2 = 'Dallas' where col1 = 3
				
el lector del registro se genera sólo INSERT almacena la llamada a procedimiento, puesto que la fila previamente no cumple la condición del filtro.

Aunque se realizó una operación UPDATE en el publicador, se aplican sólo los comandos apropiados en el suscriptor.

Referencias

Para SQL Server 2000 Service Pack 1 o posterior, consulte el artículo siguiente en Microsoft Knowledge Base:
302341INF: Nueva marca de seguimiento para habilitar la actualización de Singleton para la duplicación transaccional

Propiedades

Id. de artículo: 238254 - Última revisión: lunes, 12 de mayo de 2008 - Versión: 6.2
La información de este artículo se refiere a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
Palabras clave: 
kbmt kbinfo KB238254 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 238254

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com