Fonctionnement de la réplication de capture instantanée

Par défaut, les trois types de réplication utilisent une capture instantanée pour initialiser les abonnés. L'Agent de capture instantanée SQL Server génère toujours les fichiers de capture instantanée, mais l'Agent qui remet les fichiers diffère selon le type de réplication utilisé. La réplication de capture instantanée et la réplication transactionnelle utilisent l'Agent de distribution pour remettre les fichiers, alors que la réplication de fusion utilise l'Agent de fusion SQL Server. L'Agent de capture instantanée s'exécute sur le serveur de distribution. L'Agent de distribution et l'Agent de fusion s'exécutent sur le serveur de distribution pour les abonnements par envoi de données (push), ou sur les abonnés pour les abonnements par extraction de données (pull). Pour plus d'informations sur les abonnements par envoi et extraction de données, consultez Abonnement à des publications. Pour plus d'informations sur les agents, consultez Présentation des Agents de réplication.

Les captures instantanées peuvent être générées et appliquées soit immédiatement après la création de l'abonnement, ou selon une planification définie lors de la création de la publication. 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 captures instantanées du serveur de publication, et enregistre les informations de suivi dans la base de données de distribution sur le serveur de distribution. Le dossier de captures instantanées par défaut est spécifié lorsque vous configurez un serveur de distribution, vous pouvez également spécifier un emplacement de remplacement pour une publication pour remplacer ou suppléer le dossier par défaut. Pour plus d'informations, consultez Autres emplacements du dossier de capture instantanée.

[!REMARQUE]

En plus du processus de capture instantanée standard décrit dans cette rubrique, un processus de capture instantanée en deux parties est utilisé pour les publications de fusion avec filtres paramétrés. Pour plus d'informations, consultez Captures instantanées des publications de fusion avec des filtres paramétrés.

L'illustration suivante montre les principaux composants de la réplication de capture instantanée.

Composants et flux de données de réplication de capture instantanée

Agent de capture instantanée

Pour la réplication de fusion, une capture est générée à chaque exécution de l'Agent de capture instantanée. Pour la réplication transactionnelle, la génération de capture instantanée dépend du paramétrage de la propriété de publication immediate_sync. Si la propriété est définie avec la valeur TRUE (valeur par défaut lors de l'utilisation de l'Assistant Nouvelle publication), une capture instantanée est générée à chaque exécution de l'Agent de capture instantanée, et peut être appliquée à un abonné à tout moment. Si la propriété est définie avec la valeur FALSE (valeur par défaut lors de l'utilisation de sp_addpublication), la capture instantanée est générée uniquement si un nouvel abonnement a été ajouté depuis la dernière exécution de l'Agent de capture instantanée ; les abonnés doivent attendre que l'Agent de capture instantanée se termine avant de pouvoir se synchroniser.

L'Agent de capture instantanée exécute les étapes suivantes :

  1. Il établit une connexion du serveur de distribution au serveur de publication, puis applique des verrous sur les tables publiées si nécessaire :

    • Pour les publications de fusion, l'Agent de capture instantanée n'utilise aucun verrou.

    • Pour les publications transactionnelles, par défaut l'Agent de capture instantanée utilise des verrous uniquement lors de la phase initiale de génération de capture instantanée.

    • Pour les publications de captures instantanées, les verrous sont utilisés pendant tout le processus de génération de capture instantanée.

  2. Il enregistre une copie du schéma de la table pour chaque article sur un fichier .sch. Si d'autres objets de base de données sont publiés, comme les index, les contraintes, les procédures stockées, les vues, les fonctions définies par l'utilisateur, etc., des fichiers script supplémentaires sont générés.

  3. Il copie les données à partir de la table publiée sur le serveur de publication et enregistre les données dans le dossier de captures instantanées. La capture instantanée est générée comme un ensemble de fichiers programme de copie en bloc (BCP).

  4. Pour les publications de capture instantanée et transactionnelle, l'Agent de capture instantanée ajoute des lignes aux tables MSrepl_commands et MSrepl_transactions dans la base de données de distribution. Les entrées de la table MSrepl_commands sont des commandes indiquant l'emplacement des fichiers .sch et .bcp, des autres fichiers de capture instantanée, et des références à tout script d'avant ou après la capture instantanée. Les entrées de la table MSrepl_transactions sont des commandes concernant la synchronisation de l'Abonné.

    Pour les publications de fusion, l'Agent de capture instantanée effectue des étapes supplémentaires. Pour plus d'informations, consultez Comment la réplication de fusion initialise les publications et les abonnements.

  5. Il libère tous les verrous sur les tables publiées.

Vous ne pouvez pas effectuer de modifications de schéma sur les tables publiées pendant la génération 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.

Agent de distribution et Agent de fusion

Pour les publications de captures instantanées, chaque fois que l'Agent de distribution s'exécute pour la publication, il déplace la nouvelle capture instantanée sur chaque abonné n'ayant pas encore été synchronisé, ayant été marqué pour une réinitialisation, ou inclut de nouveaux articles.

Pour la réplication de capture instantanée ou transactionnelle, l'Agent de distribution effectue les étapes suivantes :

  1. Il établit une connexion au serveur de distribution.

  2. Il examine les tables MSrepl_commands et MSrepl_transactions de la base de données de distribution sur le serveur de distribution. L'Agent lit l'emplacement des fichiers de synchronisation dans la première table et les commandes de synchronisation de l'Abonné dans les deux tables.

  3. Il applique le schéma et les commandes à la base de données d'abonnement.

Pour une publication de réplication de fusion non filtrée, l'Agent de fusion effectue les étapes suivantes :

  1. Il établit une connexion au serveur de publication.

  2. Il examines la table sysmergeschemachange sur le serveur de publication et détermine si une nouvelle capture instantanée doit être appliquée sur l'Abonné.

  3. Si une nouvelle capture instantanée est disponible, l'Agent de fusion applique les fichiers de capture instantanée à la base de données d'abonnement à partir de l'emplacement spécifié dans sysmergeschemachange.