Niveaux d'isolation dans la réplication SQL Server

Cette page explique comment activer l'isolation de transaction dans les instantanés de base de données Microsoft SQL Server dans les tâches de réplication Cloud Data Fusion.

À propos des niveaux d'isolation

Pour capturer les modifications apportées aux tables sources d'une base de données SQL Server, la tâche de réplication utilise un connecteur Debezium. Lors de la phase d'instantané, Debezium acquiert des verrous en fonction du snapshot.isolation.mode configuré.

Le tableau suivant compare les modes d'isolation compatibles avec les tâches de réplication.

Mode d'isolation Serrures acquises Cohérence des données
read_uncommitted Aucune
read_committed Verrouillers partagés sur un lot de lignes à la fois Partiel. Un enregistrement ajouté peut apparaître deux fois: une fois dans l'instantané initial et une fois dans la phase de diffusion.
repeatabe_read
(par défaut)
Cadenas partagés sur toutes les lignes Partiel. Un enregistrement ajouté peut apparaître deux fois: une fois dans l'instantané initial et une fois dans la phase de diffusion.
snapshot Aucune Plein.
exclusive Verrouillage exclusif sur toutes les tables Plein.

Pour en savoir plus sur les modes d'isolation, consultez Définir le niveau d'isolation de transaction.

Par défaut, le mode d'isolation d'instantané est repeatable_read. Ce mode utilise des verrous partagés sur toutes les données lues pendant le processus de création d'instantanés. Cela empêche les autres transactions de modifier les lignes existantes et peut potentiellement autoriser l'insertion de nouveaux enregistrements (consultez la section Remonter le problème).

Nous vous recommandons d'activer la réplication avec isolation des instantanés si elle est déjà activée sur la base de données source, car elle garantit une cohérence complète des données sans verrouillage des tables. Si cette fonctionnalité n'est pas activée, découvrez l'impact des niveaux d'isolation basés sur la gestion des versions des lignes dans le moteur de base de données SQL Server avant de l'activer.

Activer l'isolation d'instantané dans une tâche de réplication

  1. Activez l'isolation d'instantanés dans la base de données SQL Server:

    ALTER DATABASE DATABASE_NAME
    SET ALLOW_SNAPSHOT_ISOLATION ON
    

    Remplacez DATABASE_NAME par le nom de la base de données SQL Server.

  2. Définissez l'argument d'exécution snapshot.isolation.mode sur snapshot. Pour en savoir plus, consultez la section Transmettre un argument d'exécution à une tâche de réplication.

Étapes suivantes