Fonctionnement de la réplication transactionnelle

La réplication transactionnelle est effectuée par l'Agent de capture instantanée, l'Agent de lecture du journal et l'Agent de distribution SQL Server. L'Agent de capture instantanée prépare les fichiers de capture instantanée contenant les schémas ainsi que les données des tables et des objets de base de données publiés, stocke les fichiers dans le dossier de capture instantanée, et enregistre les travaux de synchronisation dans la base de données de distribution sur le serveur de distribution.

L'Agent de lecture du journal surveille le journal des transactions de chaque base de données configurée pour la réplication transactionnelle et copie les transactions devant être répliquées à partir du journal des transactions dans la base de données de distribution, laquelle joue le rôle de file d'attente de stockage et transfert. L'Agent de distribution copie les fichiers de capture instantanée initiale du dossier de capture instantanée et les transactions conservées dans les tables de la base de données de distribution vers les Abonnés.

Les modifications incrémentielles apportées au niveau du serveur de publication sont transmises aux Abonnés en fonction de la planification de l'Agent de distribution, qui peut s'exécuter soit continu pour bénéficier d'une latence minimale, soit à intervalles planifiés. Dans la mesure où les modifications apportées aux données doivent être effectuées sur le serveur de publication (lorsque la réplication transactionnelle est utilisée sans les options de mise à jour immédiate ou de mise à jour en attente), les conflits de mise à jour sont évités. Tous les Abonnés auront finalement les mêmes valeurs que le serveur de publication. Si les options de mise à jour immédiate ou de mise à jour en attente sont utilisées avec la réplication transactionnelle, les mises à jour peuvent être effectuées au niveau de l'Abonné, mais des conflits sont possibles en raison de l'option de mise à jour en attente. Pour plus d'informations, consultez Comment fonctionnent les abonnements pouvant être mis à jour.

L'illustration suivante montre les principaux composants de la réplication transactionnelle.

Composants et flux de données de réplication transactionnelle

Jeu de données initial

Avant qu'un nouvel Abonné de réplication transactionnelle puisse recevoir des modifications incrémentielles du serveur de publication, cet Abonné doit posséder des tables ayant le même schéma et les mêmes données que celles du serveur de publication. Le jeu de données initial est généralement une capture instantanée créée par l'Agent de capture instantanée puis distribuée et appliquée par l'Agent de distribution. Le jeu de données initial peut être fourni par une sauvegarde ou un autre moyen, par exemple SQL Server Integration Services. Pour plus d'informations, consultez Initialisation d'un abonnement.

La distribution et l'application des captures instantanées ne concernent que les Abonnés qui attendent une capture instantanée initiale. Les autres Abonnés de cette publication (déjà initialisés) ne sont pas concernés.

Traitement simultané de captures instantanées

La réplication de captures instantanées place des verrous partagés sur toutes les tables publiées dans le cadre de la réplication pour toute la durée du processus de génération de captures instantanées. Cela peut empêcher la mise à jour des tables de publication. Le traitement simultané de captures instantanées, qui constitue l'option par défaut de la réplication transactionnelle, ne maintient pas les verrous en place tout au long de la phase de génération de capture instantanée, de sorte que les utilisateurs peuvent continuer à travailler sans interruption pendant que la réplication crée les fichiers de capture instantanée initiale.

Agent de capture instantanée

Les procédures utilisées par l'Agent de capture instantanée pour implémenter la capture instantanée initiale dans la réplication transactionnelle sont les mêmes que celles utilisées dans la réplication de capture instantanée (sauf en ce qui concerne le traitement simultané de captures instantanées décrit précédemment). Pour plus d'informations, consultez Fonctionnement de la réplication de capture instantanée.

Une fois les fichiers de capture instantanée générés, vous pouvez les visualiser dans le dossier de capture instantanée à l'aide de l'Explorateur Windows Microsoft.

Modification des données et de l'Agent de lecture du journal

L'Agent de lecture du journal s'exécute sur le serveur de distribution, très souvent en continu mais parfois aussi en fonction d'une planification établie. Lorsqu'il s'exécute, l'Agent de lecture du journal lit d'abord le journal des transactions de publication (le même journal de base de données utilisé pour le suivi et la récupération des transactions lors des opérations normales du moteur de base de données SQL Server) et identifie les instructions INSERT, UPDATE et DELETE, ainsi que toute autre modification apportée aux données dans les transactions marquées pour réplication. Ensuite, l'Agent copie ces transactions dans des traitements dans la base de données de distribution du serveur de distribution. L'Agent de lecture du journal utilise la procédure stockée interne sp_replcmds pour obtenir le jeu de commandes suivant marqué pour réplication à partir du journal. La base de données de distribution devient ensuite une file d'attente où les modifications sont stockées puis transférées aux Abonnés. Seules les transactions validées sont envoyées à la base de données de distribution.

Une fois que la totalité du traitement des transactions a été écrit correctement dans la base de données de distribution, il est validé. Après la validation de chaque traitement de commandes sur le serveur de distribution, l'Agent de lecture du journal appelle sp_repldone pour marquer l'endroit où s'est terminée la réplication. Enfin, l'Agent marque les lignes du journal de transactions qui sont prêtes à être définitivement supprimées. Les lignes en attente de réplication ne le sont pas.

Les commandes de transaction sont stockées dans la base de données de distribution jusqu'à ce qu'elles aient été propagées à tous les Abonnés ou jusqu'à l'expiration de la période de rétention de distribution maximale. Les Abonnés reçoivent les transactions dans le même ordre que celui de leur application sur le serveur de publication.

Agent de distribution

L'Agent de distribution est généralement exécuté sur le serveur de distribution pour les abonnements envoyés (push) et sur l'Abonné pour les abonnements extraits (pull). L'Agent déplace les transactions de la base de données de distribution vers l'Abonné. Si un abonnement est marqué pour validation, l'Agent de distribution vérifie également si les données correspondent entre le serveur de publication et l'Abonné. Pour plus d'informations, consultez Validation des données répliquées.