As instruções UPDATE podem ser replicadas como pares de INSERT/DELETE

Traduções de Artigos Traduções de Artigos
Artigo: 238254 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sumário

Se qualquer coluna que faz parte de uma restrição exclusiva é actualizada, SQL Server implementa a actualização como uma "adiada actualização", que significa como um par de DELETE / operações INSERT . Esta "actualização diferida" faz com que a replicação para enviar um par de DELETE / instruções INSERT para os subscritores. Também existem outras situações que podem causar uma actualização adiada. Assim, qualquer lógica de negócio que implementam no UPDATE accionadores ou procedimentos armazenados personalizados no subscritor deve também ser incluída no DELETE / accionadores de INSERT ou procedimentos armazenados personalizados.

Mais Informação

O comportamento predefinido do replicação transaccional consiste em utilizar INSERT , UPDATE e DELETE procedimentos armazenados personalizados para aplicar alterações aos subscritores.

instruções INSERT efectuadas no Editor são aplicadas aos subscritores através de uma chamada de procedimento INSERT armazenados. Do mesmo modo, uma instrução DELETE é aplicada através de uma chamada de procedimento DELETE armazenados.

No entanto, quando uma instrução UPDATE é executada como uma "adiada actualização", os locais de agente logreader um par de DELETE / chamadas de procedimento INSERT armazenados na base de dados distribuição sejam aplicadas os subscritores em vez de uma actualização armazenados chamada de procedimento. Por exemplo, suponha que tem uma tabela de publicação, denominada TABLE1, com estes três colunas:
  • Col1 int
  • Col2 int
  • Col3 varchar(30).
A restrição exclusiva apenas no TABLE1 está definida na col1 através de uma restrição de chave primária. Suponha que tem um registo (1,1, ' Pombal').

Quando executar este código:
UPDATE TABLE1 set col1 = 3 where col2 = 'Dallas'
				
a instrução UPDATE é implementada pelo SQL Server como um par de DELETE / instruções INSERT desde que estão a actualizar col1, que tem um índice único definido. Assim, o logreader coloca um par de DELETE / INSERT as chamadas a base de dados de distribuição. Isto pode afectar qualquer lógica de negócio está presente no accionadores ou procedimentos armazenados personalizados no subscritor. Deve incorporar a lógica comercial adicionais accionadores DELETE e INSERT ou procedimentos armazenados para processar esta situação.

Se preferir utilizar a lógica única e pretender que todos os seus comandos UPDATE replicados como DELETE / pares de INSERT , pode activar um sinalizador de rastreio conforme descrito neste artigo da base de dados de conhecimento da Microsoft:
160181INF: O sinalizador de rastreio para replicar UPDATE como DELETE/INSERT par
Além disso, se utilizar um filtro horizontal na publicação e se a linha actualizada não cumpre uma condição de filtro, apenas uma chamada de procedimento DELETE é enviada para os subscritores. Se a linha actualizada anteriormente não respeita a condição de filtro mas corresponder à condição após a actualização, apenas a chamada de procedimento INSERT é enviada através do processo de replicação.

No exemplo anterior, suponha que também tem um filtro horizontal definido no TABLE1: onde col2 = 'Escritório de Pombal'. Se executar este código:
UPDATE table1 set col2 = 'New York' where col1 = 3
				
locais logreader de apenas agente um DELETE armazenados chamada de procedimento liquidar os subscritores, uma vez que a linha actualizada não cumpre os critérios de filtro horizontal.

Agora, se executar este código:
UPDATE table1 set col2 = 'Dallas' where col1 = 3
				
gera o logreader só INSERT armazenados chamada de procedimento, uma vez que a linha não cumpria anteriormente a condição de filtro.

Apesar de uma operação UPDATE tiver sido efectuada no Editor, apenas os comandos adequados são aplicados no subscritor.

Referências

Para o SQL Server 2000 Service Pack 1 ou posterior, consulte o seguinte artigo na base de dados de conhecimento da Microsoft:
302341INF: Sinalizador de rastreio nova para activar actualização singleton para replicação transaccional

Propriedades

Artigo: 238254 - Última revisão: 12 de maio de 2008 - Revisão: 6.2
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
Palavras-chave: 
kbmt kbinfo KB238254 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 238254

Submeter comentários

 

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