Contrôle des contraintes, des identités et des déclencheurs avec l'option NOT FOR REPLICATION
Dans une topologie de réplication, il est parfois souhaitable de traiter différemment l'activité des utilisateurs et l'activité des Agents. Si, par exemple, une ligne est insérée par un utilisateur sur le serveur de publication et que cette insertion est conforme à la contrainte de validation définie sur la table, il n'est pas toujours nécessaire d'appliquer la même contrainte lors de l'insertion de la ligne par un Agent de réplication sur l'Abonné. L'option NOT FOR REPLICATION permet de spécifier un traitement différent pour les objets de base de données suivants lorsqu'un Agent de réplication effectue une opération :
Contraintes de clés étrangères
La contrainte de clé étrangère n'est pas appliquée lorsqu'un Agent de réplication effectue une opération d'insertion (insert), de mise à jour (update) ou de suppression (delete).
Contraintes de validation
La contrainte de validation n'est pas appliquée lorsqu'un Agent de réplication effectue une opération d'insertion (insert), de mise à jour (update) ou de suppression (delete).
Colonnes d'identité
La valeur de colonne d'identité n'est pas incrémentée lorsqu'un Agent de réplication effectue une opération d'insertion (insert).
Déclencheurs
Le déclencheur n'est pas exécuté lorsqu'un Agent de réplication effectue une opération d'insertion (insert), de mise à jour (update) ou de suppression (delete).
Lorsqu'une table est publiée, les options de schéma contrôlent la manière dont les objets sont créés dans la base de données d'abonnement. Les options de schéma par défaut diffèrent par publication. Lorsque des options sont définies de manière à spécifier que des contraintes de clé étrangère et des contraintes de validation sont créées dans la base de données d'abonnement, l'option NOT FOR REPLICATION est activée. Cette option NOT FOR REPLICATION est également définie lors de la réplication de colonnes d'identité dans les publications transactionnelles et de fusion qui prennent en charge les abonnements pouvant être mis à jour. Pour plus d'informations sur la réplication des colonnes d'identité, consultez Réplication de colonnes d'identité.
Dans la plupart des cas, les paramètres par défaut conviennent parfaitement mais ils peuvent être modifiés si une application exige un comportement différent. L'élément principal à prendre en considération est le déclencheur. Si, par exemple, vous définissez un déclencheur d'insertion avec l'option NOT FOR REPLICATION définie, toutes les insertions utilisateur activent le déclencheur, ce qui n'est pas le cas des insertions des Agents de réplication. Prenons l'exemple d'un déclencheur qui insère des données dans une table de suivi : lorsque l'utilisateur insère la ligne au départ, il est normal que le déclencheur s'active et entre une ligne dans la table de suivi mais il ne doit pas s'activer lorsque ces données sont répliquées sur l'Abonné car cela se traduit par l'ajout d'une ligne inutile dans la table de suivi.
Pour spécifier l'option NOT FOR REPLICATION
L'option NOT FOR REPLICATION peut être spécifiée de plusieurs façons :
À l'aide des options du schéma de réplication. Pour plus d'informations, consultez Procédure : spécifier des options de schéma (SQL Server Management Studio) et Procédure : spécifier des options de schéma (programmation Transact-SQL de la réplication).
Directement dans la syntaxe Transact-SQL ou dans MicrosoftSQL Server Management Studio dans les circonstances suivantes :
Création ou modification d'un objet dans la base de données de publication.
Création ou modification d'un objet dans la base de données d'abonnement. En règle générale, les objets sont créés manuellement et non par réplication uniquement si un abonnement est initialisé sans une capture instantanée.
Pour plus d'informations, consultez :
CREATE TABLE (Transact-SQL), ALTER TABLE (Transact-SQL),CREATE TRIGGER (Transact-SQL) etALTER TRIGGER (Transact-SQL)
Procédure : désactiver des contraintes de clé étrangère pour la réplication (Visual Database Tools)
Procédure : désactiver des contraintes de validation pour la réplication (Visual Database Tools)