Instructions UPDATE peuvent être répliquées sous forme de paires DELETE/INSERT

Traductions disponibles Traductions disponibles
Numéro d'article: 238254 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Résumé

Si la colonne qui fait partie d'une contrainte unique est mise à jour, puis SQL Server implémente la mise à jour en tant que «mise à différé jour», c'est-à-dire sous la forme d'une paire de DELETE / INSERT opérations. Cette «mise à différé jour"entraîne réplication pour envoyer une paire de DELETE / instructions INSERT aux abonnés. Il existe également d'autres situations susceptibles de provoquer une mise à jour différée. Donc, toute logique métier que vous implémentez dans votre déclencheurs UPDATE ou des procédures stockées personnalisées sur l'abonné doit également figurer au DELETE / INSERT des déclencheurs ou des procédures stockées personnalisées.

Plus d'informations

Dans la réplication transactionnelle, le comportement par défaut consiste à utiliser des procédures stockées personnalisées INSERT, UPDATE et DELETE pour appliquer les modifications sur les abonnés.

Instructions INSERT, effectuées sur l'éditeur sont appliquées aux abonnés par le biais d'un appel de procédure INSERT stockées. De même, une instruction DELETE est appliquée par l'intermédiaire d'un appel de procédure DELETE stockées.

Toutefois, lorsqu'une instruction UPDATE est exécutée comme un "différé update", les lieux de l'agent logreader une paire de DELETE / INSERT stockées procédure appelle dans la base de données de distribution à appliquer aux abonnés et non une mise à jour stockées appel de procédure. Par exemple, supposons que vous disposez d'une table de publication, nommée Table1, avec ces trois colonnes :
  • Col1 int
  • int col2
  • Col3 varchar (30).
La contrainte d'unicité uniquement sur la TABLE1 est définie sur col1 par l'intermédiaire d'une contrainte de clé primaire. Supposons que vous possédez un seul enregistrement (1,1, ' Dallas').

Lorsque vous exécutez ce code :
UPDATE TABLE1 set col1 = 3 where col2 = 'Dallas'
				
l'instruction UPDATE est implémentée par SQL Server en tant que paire de DELETE / instructions INSERT depuis que vous mettez à jour col1, possède un index unique défini. Par conséquent, la lecture du journal place une paire de DELETE / INSERT appelle dans la base de données de distribution. Cela peut avoir un impact sur toute logique métier est présent dans les déclencheurs ou des procédures stockées personnalisées sur l'abonné. Vous devez incorporer la logique métier supplémentaire de déclencheurs DELETE et INSERT ou les procédures stockées pour gérer cette situation.

Si vous préférez utiliser logique unique et que vous souhaitez toutes vos commandes UPDATE répliquées en tant que DELETE / INSERT paires, vous pouvez activer un indicateur de trace, comme décrit dans cet article de base de connaissances Microsoft :
160181INF: Indicateur de trace pour répliquer UPDATE sous forme de paires DELETE/INSERT
En outre, si vous utilisez un filtre horizontal dans votre composition et si la ligne mise à jour ne répond pas à une condition de filtre, uniquement un appel de procédure DELETE est envoyé aux abonnés. Si la ligne mise à jour ne respectait pas la condition de filtre précédemment mais répond à la condition après la mise à jour, uniquement l'appel de procédure INSERT envoyée par le processus de réplication.

Dans l'exemple précédent, supposons que vous possédez également un filtre horizontal défini sur la TABLE1 : où col2 = 'Dallas'. Si vous exécutez ce code :
UPDATE table1 set col2 = 'New York' where col1 = 3
				
les logreader agent seuls endroits où un DELETE à appliquer aux abonnés dans la mesure où la ligne mise à jour ne répond pas aux critères de filtre horizontal de l'appel de procédure stockée.

Désormais, si vous exécutez ce code :
UPDATE table1 set col2 = 'Dallas' where col1 = 3
				
le logreader génère uniquement l'appel de la procédure, l' INSERT stockée dans la mesure où la ligne ne respectait pas précédemment la condition du filtre.

Bien qu'une opération UPDATE a été effectuée au niveau de l'éditeur, uniquement les commandes appropriées sont appliquées côté abonné.

Références

Pour SQL Server 2000 Service Pack 1 ou version ultérieure, consultez l'article suivant dans la base de connaissances Microsoft :
302341INF: Nouvel indicateur de trace pour activer la mise à jour de singleton pour la réplication transactionnelle

Propriétés

Numéro d'article: 238254 - Dernière mise à jour: lundi 12 mai 2008 - Version: 6.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 2000 Standard
  • Microsoft SQL Server 7.0 Standard
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
Mots-clés : 
kbmt kbinfo KB238254 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 238254
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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