Damit Ihre Analyse- und nachgelagerten Datenbanken synchron bleiben, können Sie mit Datastream Verlaufsdaten und laufende Änderungen aus einer SQL Server-Datenbank replizieren.
Informationen zu SQL Server-Quellen in Datastream finden Sie unter Replikationsverhalten und CDC-Methoden (Change Data Capture), unterstützte Versionen und Editionen sowie bekannte Einschränkungen.
Verhalten
Datastream verfolgt Änderungen der Datenbearbeitungssprache (Data Manipulation Language, DML) mit einer der folgenden CDC-Methoden:
Tabellen ändern
Mit der CDC-Methode für Änderungstabellen können Nutzer Logs für einen kürzeren Zeitraum aufbewahren und so Speicherplatz sparen. Sie unterstützt jedoch einen geringeren Durchsatz im Vergleich zur Methode für Transaktionslogs. Die Methode hat weniger Einschränkungen als Transaktionslogs. Beispielsweise wird das Risiko einer Logkürzung eliminiert, die zu dauerhaften Fehlern bei Streams führt, und die Replikation verschlüsselter Tabellen wird unterstützt. Weitere Informationen finden Sie unter Bekannte Einschränkungen.
Bei dieser CDC-Methode werden Änderungen an der Quelle mithilfe dedizierter Änderungstabellen verfolgt. Transaktionslogs werden weiterhin verwendet, aber nur in begrenztem Umfang, und Sie müssen sie nicht über längere Zeiträume aufbewahren. Wenn DML-Ereignisse auf die Quelltabellen angewendet werden, werden die Änderungen in den entsprechenden Änderungstabellen repliziert. Die Änderungstabellen haben dieselbe Struktur wie die Quelltabelle, enthalten aber zusätzliche Spalten für die Metadaten der Änderungen. Nur festgeschriebene Transaktionen werden den Änderungstabellen hinzugefügt, zusammen mit der Logsequenznummer (LSN) des Commit-Vorgangs.
Wie Datastream DDL-Änderungen am Quellschema verarbeitet
Wenn Sie die CDC-Methode für Änderungstabellen verwenden, werden für jede Änderungstabelle Erfassungsinstanzen erstellt. Jede Erfassungsinstanz ist mit einer Liste von Spalten verknüpft, die sie erfasst und verfolgt. Wenn nach dem Erstellen der Erfassungsinstanz eine Änderung der Datendefinitionssprache (DDL) in der Quelle erfolgt, wird die Änderung standardmäßig von der Instanz ignoriert. Sie können Ihren SQL Server-Stream jedoch so konfigurieren, dass Spalten repliziert werden, die dem Quellschema nach dem Erstellen des Streams und der Erfassungsinstanz hinzugefügt wurden.
Hinweis
- Prüfen Sie, ob Ihrem Datastream-Nutzer die Berechtigung
db_ownerzugewiesen ist.
Spalten replizieren, die dem Quellschema hinzugefügt wurden
Damit Datastream die Replikation von Spalten unterstützt, die dem Quellschema nach dem Erstellen eines Streams hinzugefügt wurden, müssen Sie dem Stream das Label enable_ddl_support_for_ct hinzufügen:
Rufen Sie in der Google Cloud Console die Seite Streams auf.
Klicken Sie auf den SQL Server-Stream, den Sie bearbeiten möchten.
Klicken Sie auf der Seite Streamdetails auf Pausieren.
Klicken Sie auf Bearbeiten > Streameinstellungen bearbeiten.
Klicken Sie auf Label hinzufügen.
Geben Sie im Feld Schlüssel
enable_ddl_support_for_ctein.Geben Sie im Feld Value (Wert) den Wert
trueein.Klicken Sie auf Speichern.
Klicke auf Starten, um den Stream fortzusetzen.
Datastream prüft die Tabelle cdc.ddl_history alle fünf Minuten auf neue DDLs. Wenn einer Tabelle, die in der Streamkonfiguration enthalten ist, eine neue Spalte hinzugefügt wird, prüft Datastream, ob die Tabelle zwei Erfassungsinstanzen hat:
Wenn dies nicht der Fall ist, erstellt Datastream eine neue Erfassungsinstanz, liest die Daten der ursprünglichen Erfassungsinstanz bis zum Zeitpunkt der DDL und beginnt dann mit dem Lesen aus der neuen Erfassungsinstanz.
In diesem Fall wird ein Logeintrag hinzugefügt, der besagt, dass die DDL-Änderung nicht verarbeitet werden kann, weil die maximale Anzahl von Erfassungsinstanzen erreicht ist.
Transaktionslogs
Bei dieser CDC-Methode liest Datastream Änderungen in der Quelle direkt aus Transaktionslogs. Diese Methode erfordert weniger Ressourcen und ermöglicht einen schnelleren Datenabruf, hat aber mehr Einschränkungen.
Um Datenverluste zu vermeiden, ist es wichtig, dass die Logs nicht abgeschnitten werden, bevor Datastream sie liest. Wenn Sie die Logdateien dagegen zu lange aufbewahren, belegen sie Speicherplatz, was schließlich dazu führen kann, dass die Datenbankinstanz in den Lesemodus wechselt.
Damit der CDC-Reader genügend Zeit hat, die Logs zu lesen, und gleichzeitig die Log-Kürzung zur Freigabe von Speicherplatz ermöglicht wird, müssen Sie zusätzliche Konfigurationsschritte ausführen, z. B. die Abfrageintervalle ändern und einen Kürzungsschutz einrichten. Diese Schritte bieten eine zusätzliche Schutzebene, damit Datastream die Daten auch dann lesen kann, wenn es auf der Datastream-Seite zu Ausfallzeiten oder einem Verbindungsproblem zwischen der Quelldatenbank und Datastream kommt.
Eine ausführliche Anleitung zum Anwenden dieser zusätzlichen Maßnahmen finden Sie auf der Seite SQL Server-Quelldatenbank konfigurieren. Wählen Sie dort Ihren Datenbanktyp aus.
Versionen
Datastream unterstützt die folgenden Versionen und Editionen von SQL Server-Datenbanken:
- Selbstverwaltet (lokal oder in der Cloud gehostet) mit den folgenden Versionen:
- Enterprise: 2008 und höher
- Standard: 2016 SP1 und höher
- Entwickler: 2008 und höher
- Amazon RDS for SQL Server
Azure SQL-Datenbank (Stufe S3 und höher).
Cloud SQL for SQL Server
Datastream unterstützt die folgenden Versionen von SQL Server-Datenbanken nicht:
- SQL Server Standard Edition, Version 2008 bis 2014
- SQL Server Express
- SQL Server Web
Bekannte Einschränkungen
Zu den bekannten Einschränkungen bei der Verwendung einer SQL Server-Datenbank als Quelle gehören:
- Streams sind auf 10.000 Tabellen beschränkt.
- Eine Tabelle mit mehr als 500 Millionen Zeilen kann nur dann nachträglich befüllt werden, wenn die folgenden Bedingungen erfüllt sind:
- Die Tabelle hat einen eindeutigen Index.
- Keine der Indexspalten darf Nullwerte enthalten.
- Alle Spalten des Index sind im Stream enthalten.
- Datenbanken mit aktivierter verzögerter Langlebigkeit oder beschleunigter Datenbankwiederherstellung (ADR) werden nicht unterstützt.
- Das Streamen von Änderungen an Systemtabellen wird nicht unterstützt.
- Die Windows Active Directory-Authentifizierung (AD) wird nicht unterstützt.
Datastream unterstützt alle SQL Server-Sortierungen, mit Ausnahme derer mit der Codepage
0. Führen Sie die folgende Abfrage auf Ihrer SQL Server-Instanz aus, um die Codepage einer bestimmten Sortierung zu prüfen:SELECT *, CAST(COLLATIONPROPERTY(name, 'CodePage') AS INT) FROMsys.fn_helpcollations() WHERE name = COLLATION_NAME; Die folgenden Datentypen werden nicht unterstützt und nicht in das Ziel repliziert:
SQL_VARIANTHIERARCHYID
Datastream repliziert benutzerdefinierte Datentypen. Es ist jedoch der Basisdatentyp, von dem Sie Ihren benutzerdefinierten Typ ableiten, der im Ziel gespeichert wird. Wenn Sie beispielsweise einen
USERNAME-Datentyp basierend auf demVARCHAR(50)-Datentyp definieren, werden die Daten im Ziel alsVARCHAR(50)gespeichert.Datastream unterstützt kein CDC für Spalten mit großen Objekten (
TEXT,NTEXT,XML,IMAGE,GEOMETRY,GEOGRAPHY) und Spalten mit maximaler variabler Länge (VARCHAR(MAX),VARBINARY(MAX),NVARCHAR(MAX)) in Tabellen ohne eindeutigen Index.Wenn im Stream keine Spalten für große Objekte enthalten sind, wird CDC unterstützt.
Die Replikation der folgenden Änderungen am Quellschema wird bei Verwendung der CDC-Methode für Änderungstabellen nicht unterstützt und kann zu Datenbeschädigungen oder Fehlern bei der Verarbeitung von Ereignissen führen:
- Spalten löschen: Daten in diesen Spalten werden durch
NULL-Werte ersetzt. - Spalten umbenennen: Wird für SQL Server nicht unterstützt, wenn CDC aktiviert ist.
Datentypen ändern: Der SQL Server-CDC-Erfassungsjob gibt nur die folgenden Datentypänderungen weiter:
- Maximale Länge für Strings ändern: z. B. den Datentyp
VARCHAR(50)inVARCHAR(100)ändern. Die BigQuery-SpalteSTRINGhat keine feste Länge und akzeptiert den längeren String. - Erhöhen des Ganzzahlwertbereichs: z. B. Ändern des Datentyps
INTinBIGINT. Der BigQuery-DatentypINT64unterstützt den neuen Typ, ohne dass eine Schemaänderung erforderlich ist. - Ändern der Genauigkeit und Skalierung für numerische Werte, z. B. Ändern des Datentyps
DECIMAL(10, 2)inDECIMAL(18, 4). Der BigQuery-TypNUMERIChat eine große feste Genauigkeit (38) und Skalierung (9). Eine solche Änderung wird unterstützt.
Bei anderen Änderungen des Datentyps versucht Datastream, die Daten in das Ziel einzufügen, und gibt einen Fehler aus, wenn die Daten abgelehnt werden.
- Maximale Länge für Strings ändern: z. B. den Datentyp
- Spalten löschen: Daten in diesen Spalten werden durch
Datastream unterstützt die Replikation von Tabellen mit Spalten, die Datenmaskierung enthalten, nicht. Daten werden ohne Maskierung repliziert.
Datastream unterstützt nicht die Replikation von Änderungen, die mit dem DACPAC-Paket (Data Tier Application Package) auf die Datenbank angewendet wurden.
Datastream repliziert keine Änderungen, die mit den Anweisungen
WRITETEXToderUPDATETEXTvorgenommen wurden.Wenn Sie das Label
enable_ddl_support_for_ctverwenden, um Spalten zu replizieren, die dem Quellschema hinzugefügt wurden, können Sie nicht mehrere Streams an dieselbe SQL Server-Quelltabelle anhängen. Da SQL Server maximal zwei Erfassungsinstanzen pro Tabelle unterstützt, können Schemaänderungen zu Race-Bedingungen führen, bei denen Datastream versucht, Erfassungsinstanzen zu erstellen. Dies kann dazu führen, dass Streams fehlschlagen.Datastream unterstützt die Replikation von berechneten Spalten nur, wenn die Spalte als
PERSISTEDgekennzeichnet ist.Datastream unterstützt die Komprimierungstypen
PAGE,COLUMNSTOREundCOLUMNSTORE ARCHIVEnicht.
Zusätzliche Einschränkungen bei Verwendung der Transaktionslog-Methode
Wenn Sie die CDC-Methode für Transaktionslogs verwenden, gelten die folgenden zusätzlichen Einschränkungen:
- Transparent Data Encryption (TDE) wird nicht unterstützt.
- Die Verschlüsselung auf Spaltenebene wird nicht unterstützt. Die Daten in diesen Spalten werden durch
NULL-Werte ersetzt. - Wenn Sie die CDC-Methode für Transaktionslogs verwenden, unterstützt Datastream nicht die Replikation von Spalten, die dem Quellschema nach dem Erstellen eines Streams hinzugefügt wurden. Die neuen Spalten werden nicht in das Ziel repliziert.
- Datastream unterstützt die
ROLLBACK TO SAVEPOINT-Anweisung nicht. Solche Rollback-Ereignisse werden ignoriert und nicht in das Ziel repliziert. - Datastream unterstützt CDC für Zeilen mit mehr als 8 KB in den folgenden Tabellentypen nicht:
- Tabellen ohne eindeutigen Index
- Tabellen, die nur einen eindeutigen, nicht geclusterten Index mit einer oder mehreren Spalten mit variabler Länge enthalten (
VARCHAR,VARBINARY,NVARCHAR,GEOMETRY,GEOGRAPHY)
Datastream unterstützt CDC nicht für Spalten mit großen Objekten (
TEXT,NTEXT,XML,IMAGE,GEOMETRY,GEOGRAPHY) in den folgenden Tabellentypen:- Tabellen ohne eindeutigen Index
- Tabellen, die nur einen eindeutigen, nicht geclusterten Index mit einer oder mehreren Spalten mit variabler Länge enthalten (
VARCHAR,VARBINARY,NVARCHAR,GEOMETRY,GEOGRAPHY)
Wenn Spalten für große Objekte nicht im Stream enthalten sind, wird CDC für solche Tabellen nur unterstützt, wenn sie gültige Indexe haben.
Wenn Sie die Methode mit Transaktionslogs verwenden, fragt Datastream die Quelldatenbank ab, um fehlende Werte zu einem bestimmten Zeitpunkt in einem aktiven Suchprozess abzurufen, der als Ergänzung bezeichnet wird. Die Ergänzung gilt für die Datentypen
XML,TEXT,NTEXT,IMAGE,GEOMETRYundGEOGRAPHYsowie für Typen mit variabler Länge wieVARCHAR(MAX)oderVARBINARY, wenn Zeilen das Seitenlimit von 8 KB überschreiten. Da Datastream diese Spalten durch Abfragen der Datenbank ergänzt, werden Zwischenänderungen in Szenarien mit schnellen, aufeinanderfolgenden Aktualisierungen oder einem schnellen Löschen nach einem Einfügen möglicherweise nicht erfasst.DELETE-Vorgänge lösen keine Ergänzung aus. Diese Einschränkung ist besonders relevant, wenn Sie den Nur-Anhängen-Schreibmodus verwenden, bei dem alle Zwischenänderungen erfasst werden sollen.