Isolationsstufen in SQL Server-Replikaten

Auf dieser Seite wird beschrieben, wie die Transaktionsisolation in Microsoft SQL Server-Datenbank-Snapshots in Cloud Data Fusion-Replikationsjobs aktiviert wird.

Isolationsstufen

Zum Erfassen von Änderungen in den Quelltabellen in einer SQL Server-Datenbank verwendet der Replikationsjob einen Debezium-Connector. Während der Snapshot-Phase erhält Debezium Sperren gemäß der konfigurierten snapshot.isolation.mode.

In der folgenden Tabelle werden die unterstützten Isolationsmodi für Replikationsjobs verglichen.

Isolierungsmodus Erhaltene Schlösser Datenkonsistenz
read_uncommitted Nein.
read_committed Freigegebene Sperren für einen Batch von Zeilen gleichzeitig Teilweise. Ein hinzugefügter Eintrag kann zweimal angezeigt werden: einmal im ersten Snapshot und einmal in der Streamingphase.
repeatabe_read
(Standard)
Gemeinsame Sperren in allen Zeilen Teilweise. Ein hinzugefügter Eintrag kann zweimal angezeigt werden: einmal im ersten Snapshot und einmal in der Streamingphase.
snapshot Voll.
exclusive Exklusive Sperre für alle Tabellen Voll.

Weitere Informationen zu Isolationsmodi finden Sie unter Transaktionsisolationsebene festlegen.

Standardmäßig ist der Snapshot-Isolationsmodus repeatable_read. In diesem Modus werden gemeinsame Sperren aller Daten angewendet, die während des Snapshot-Prozesses gelesen werden. Sie verhindert, dass andere Transaktionen die vorhandenen Zeilen ändern, und kann das Einfügen neuer Datensätze zulassen (siehe Eskalierung von Sperren).

Die Replikation mit Snapshot-Isolation wird empfohlen, wenn sie bereits in der Quelldatenbank aktiviert ist, da sie vollständige Datenkonsistenz ohne Sperren der Tabellen bietet. Ist dies nicht der Fall, informieren Sie sich über die Auswirkungen der zeilenbasierten Isolationsebenen in der SQL Server-Datenbank-Engine, bevor Sie sie aktivieren.

Snapshot-Isolierung in einem Replikationsjob aktivieren

  1. Aktivieren Sie die Snapshot-Isolierung in der SQL Server-Datenbank:

    ALTER DATABASE DATABASE_NAME
    SET ALLOW_SNAPSHOT_ISOLATION ON
    

    Ersetzen Sie DATABASE_NAME durch den Namen der SQL Server-Datenbank.

  2. Legen Sie das Laufzeitargument snapshot.isolation.mode auf snapshot fest. Weitere Informationen finden Sie unter Laufzeitargument an einen Replikationsjob übergeben.

Nächste Schritte