Partager via


Considérations sur la réplication de fusion

Lorsque vous envisagez la réplication de fusion, tenez compte des points suivants :

  • l'ajout d'une colonne uniqueidentifier dans les tables publiées ;

  • les colonnes timestamp ;

  • les types de données LOB ;

  • l'insertion de données en bloc dans les tables publiées ;

  • le niveau de compatibilité de la publication. Pour plus d'informations, consultez la section « Niveau de compatibilité des publications de fusion » de Utilisation de plusieurs versions de SQL Server dans une topologie de réplication.

Ajout d'une colonne uniqueidentifier

La réplication de fusion se sert d'une colonne d'identificateur global unique (GUID) pour identifier chaque ligne durant le processus de réplication de fusion. Si une table publiée n'a pas de colonne uniqueidentifier possédant la propriété ROWGUIDCOL et un index unique, la réplication en ajoute une. Vérifiez que les instructions SELECT et INSERT référençant des tables publiées utilisent des listes de colonnes. Si une table n'est plus publiée et que la réplication a ajouté la colonne, la colonne est supprimée ; si la colonne existait déjà, elle n'est pas supprimée.

Colonnes timestamp

La réplication de fusion prend en charge les colonnes timestamp. La colonne timestamp est répliquée, mais pas les valeurs timestamp littérales. Les valeurs timestamp sont régénérées lorsque la capture instantanée est appliquée sur l'Abonné. Étant donné que les valeurs timestamp sont régénérées sur l'Abonné, les colonnes timestamp sont filtrées lors de la validation de l'article.

Types de données LOB

Si une table publiée inclut des LOB, nous vous recommandons d'affecter la valeur TRUE au paramètre @stream_blob_columns de sp_addmergearticle (Transact-SQL). Si TRUE n'est pas spécifié, le LOB complet doit être stocké en mémoire sur le serveur de publication qui peut alors manquer de mémoire si le LOB est très volumineux.

Important

L'activation de cette optimisation de mémoire peut nuire aux performances de l'Agent de fusion pendant la synchronisation. Cette option ne doit être utilisée que lors de la réplication de colonnes contenant des mégaoctets de données.

Les mises à jour des colonnes text, ntext et image sont répliquées uniquement si la colonne a été explicitement mise à jour avec une instruction UPDATE : la mise à jour provoque l'activation d'un déclencheur qui met à jour les métadonnées, garantissant ainsi la propagation de la transaction aux autres Abonnés. L'utilisation des opérations WRITETEXT et UPDATETEXT seules ne permet pas de propager la modification aux autres sites. Si votre application recourt aux opérations WRITETEXT et UPDATETEXT pour mettre à jour les colonnes text ou ntext, ajoutez explicitement une fausse instruction UPDATE après ces opérations dans la même transaction, afin d'activer le déclencheur et de garantir ainsi la propagation de la modification aux autres sites. Pour plus d'informations sur ces types de données, consultez Types ntext, text et image (Transact-SQL).

Notes

Nous vous recommandons d'utiliser les types de données varchar(max), nvarchar(max), varbinary(max) en lieu et place des types de données text, ntext et image, respectivement.

Insertion de données en bloc dans les tables publiées

La réplication de fusion effectue le suivi des modifications apportées aux tables publiées à l'aide des déclencheurs et des tables système. Si vous effectuez une insertion de données en bloc à l'aide de l'utilitaire bcp ou de la commande BULK INSERT, les déclencheurs ne sont pas activés par défaut. Dans ce cas, les insertions ne sont pas suivies et ne sont donc pas propagées aux autres nœuds. Pour que les modifications soient suivies, nous vous recommandons d'utiliser l'une de techniques suivantes lors de la réalisation d'insertions en bloc :

  • Utilisez l'option FIRE_TRIGGERS de l'utilitaire bcp ou la commande BULK INSERT. Cette option garantit l'activation des déclencheurs, comme dans une opération d'insertion classique. Pour plus d'informations, consultez Utilitaire bcp et BULK INSERT (Transact-SQL).

  • Exécutez la procédure stockée sp_addtabletocontents après avoir effectué l'insertion en bloc. Cette procédure permet d'insérer des références dans les tables système pour toutes les lignes d'une table source qui ne sont pas actuellement incluses. Pour plus d'informations, consultez sp_addtabletocontents (Transact-SQL).