Diese Seite enthält Informationen zu:
- Der Umgang von Datastream mit Daten, die aus einer SQL Server-Quelldatenbank abgerufen werden
- Den von Datastream unterstützten CDC-Methoden (Change Data Capture)
- Den von Datastream unterstützten Versionen von SQL Server-Datenbanken
- Bekannten Einschränkungen bei Verwendung der SQL Server-Datenbank als Quelle
Verhalten
Datastream verfolgt DML-Änderungen (Data Manipulation Language, Datenbearbeitungssprache) mit einer der folgenden CDC-Methoden:
Tabellen ändern
Mit der CDC-Methode „Tabellen ändern“ können Nutzer Logs kürzer aufbewahren und so Speicherplatz sparen. Im Vergleich zur Methode „Transaktionslogs“ wird jedoch ein geringerer Durchsatz unterstützt. Die Methode hat weniger Einschränkungen als Transaktionslogs. So wird beispielsweise das Risiko einer Log-Abschneidung vermieden, die zu dauerhaften Stream-Fehlern führen kann, und die Replikation verschlüsselter Tabellen wird unterstützt. Weitere Informationen finden Sie unter Bekannte Einschränkungen.
Bei Verwendung dieser CDC-Methode werden Änderungen an der Quelle mithilfe dedizierter Änderungstabellen verfolgt. Transaktionslogs werden weiterhin verwendet, aber 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 die entsprechenden Änderungstabellen repliziert. Die Änderungstabellen haben dieselbe Struktur wie die Quelltabellen, enthalten aber zusätzliche Spalten mit den Metadaten für die Änderungen. Nur bestätigte Transaktionen werden zusammen mit der Logsequenznummer (LSN) des Commit-Vorgangs zu den Änderungstabellen hinzugefügt.
Umgang von Datastream mit DDL-Änderungen am Quellschema
Wenn Sie die CDC-Methode „Tabellen ändern“ verwenden, werden für jede Änderungstabelle Erfassungsinstanzen erstellt. Jede Erfassungsinstanz ist mit einer Liste von Spalten verknüpft, die erfasst und verfolgt werden. Wenn nach der Erstellung der Erfassungsinstanz eine DDL-Änderung (Data Definition Language, Datendefinitionssprache) in der Quelle erfolgt, ignoriert die Instanz die Änderung. Sie können Ihren SQL Server-Stream jedoch so konfigurieren, dass Spalten repliziert werden, die dem Quellschema nach der Erstellung des Streams und der Erfassungsinstanz hinzugefügt wurden.
Hinweis
- Achten Sie darauf, dass 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 der Erstellung eines Streams hinzugefügt wurden, müssen Sie Ihrem 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 Wert
trueein.Klicken Sie auf Speichern.
Klicken Sie auf Starten , um den Stream fortzusetzen.
Datastream prüft alle fünf Minuten die
cdc.ddl_history
Tabelle auf neue DDLs. Wenn einer Tabelle, die in der Streamkonfiguration enthalten ist, eine neue Spalte hinzugefügt wurde, prüft Datastream, ob die Tabelle zwei Erfassungsinstanzen hat:
Wenn nicht, erstellt Datastream eine neue Erfassungsinstanz, liest die Daten der ursprünglichen Erfassungsinstanz bis zu dem Zeitpunkt, an dem die DDL erfolgt ist, und liest dann aus der neuen Erfassungsinstanz.
Wenn die Tabelle zwei Erfassungsinstanzen hat, wird ein Logeintrag hinzugefügt, dass die DDL-Änderung nicht verarbeitet werden kann, da die maximale Anzahl von Erfassungsinstanzen erreicht ist.
Transaktionslogs
Bei Verwendung 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 Datenverlust zu vermeiden, dürfen die Logs nicht abgeschnitten werden, bevor Datastream sie liest. Wenn Sie die Logdateien hingegen zu lange aufbewahren, belegen sie Speicherplatz, was dazu führen kann, dass die Datenbankinstanz in den Lesemodus wechselt.
Damit der CDC-Leser genügend Zeit hat, die Logs zu lesen, und gleichzeitig Logs abgeschnitten werden können, um Speicherplatz freizugeben, müssen Sie zusätzliche Konfigurationsschritte ausführen, z. B. Abrufintervalle ändern und eine Abschneidesicherung einrichten. Diese Schritte bieten eine zusätzliche Schutzebene, um sicherzustellen, dass Datastream die Daten lesen kann, auch wenn es auf der Datastream-Seite zu Ausfallzeiten kommt oder ein Verbindungsproblem zwischen der Quelldatenbank und Datastream besteht.
Eine detaillierte 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
- Developer: 2008 und höher
- Amazon RDS for SQL Server
Azure SQL-Datenbank (Tarif S3 und höher)
Cloud SQL for SQL Server
Datastream unterstützt die folgenden Versionen von SQL Server-Datenbanken nicht:
- SQL Server Standard Edition von Version 2008 bis 2014
- SQL Server Express
- SQL Server Web
Bekannte Einschränkungen
Bekannte Einschränkungen bei Verwendung der SQL Server-Datenbank als Quelle:
- Streams sind auf 10.000 Tabellen beschränkt.
- Für eine Tabelle mit mehr als 500 Millionen Zeilen ist kein Backfill möglich, es sei denn, die folgenden Bedingungen sind erfüllt:
- Die Tabelle hat einen eindeutigen Index.
- Keine der Indexspalten kann Nullwerte enthalten.
- Alle Spalten des Index sind im Stream enthalten.
- Datenbanken mit aktivierter verzögerter Langlebigkeit oder beschleunigter Datenbankwiederherstellung (Accelerated Database Recovery, 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 derjenigen mit der Codepage
0. Führen Sie die folgende Abfrage für Ihre 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_VARIANTHIERARCHYIDGEOMETRYGEOGRAPHY
Datastream repliziert benutzerdefinierte Datentypen. Im Ziel wird jedoch der Basisdatentyp gespeichert, von dem Sie Ihren benutzerdefinierten Typ ableiten. Wenn Sie beispielsweise einen Datentyp
USERNAMEbasierend auf dem DatentypVARCHAR(50)definieren, werden die Daten im Ziel alsVARCHAR(50)gespeichert.Datastream unterstützt CDC nicht für Spalten mit großen Objekten (
TEXT,NTEXT,XML,IMAGE) und Spalten mit maximal variabler Länge (VARCHAR(MAX),VARBINARY(MAX),NVARCHAR(MAX)) in Tabellen ohne eindeutigen Index.Wenn Spalten mit großen Objekten nicht im Stream enthalten sind, wird CDC unterstützt.
Die Replikation der folgenden Änderungen am Quellschema wird bei Verwendung der CDC-Methode „Tabellen ändern“ 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 überträgt nur die folgenden Datentypänderungen:
- Maximale Länge für Strings ändern: Ändern Sie beispielsweise den Datentyp
VARCHAR(50)inVARCHAR(100). Die BigQuery-SpalteSTRINGhat keine feste Länge und akzeptiert den längeren String. - Bereich für Ganzzahlwerte erhöhen: Ändern Sie beispielsweise den
INTDatentyp inBIGINT. Der BigQuery-DatentypINT64kann den neuen Typ aufnehmen, ohne dass eine Schemaänderung erforderlich ist. - Genauigkeit und Skalierung für numerische Werte ändern: Ändern Sie beispielsweise den Datentyp
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 am Datentyp 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: Ändern Sie beispielsweise den Datentyp
- Spalten löschen: Daten in diesen Spalten werden durch
Datastream unterstützt keine Replikation von Tabellen mit Spalten mit Datenmaskierung. Daten werden ohne Maskierung repliziert.
Datastream unterstützt keine 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 nicht mehrere Streams an dieselbe SQL Server-Quelltabelle angehängt werden. 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 zu Stream-Fehlern führen.Datastream unterstützt keine Replikation von berechneten Spalten, es sei denn, die Spalte ist mit
PERSISTEDgekennzeichnet.Datastream unterstützt die Komprimierungstypen
PAGE,COLUMNSTOREoderCOLUMNSTORE ARCHIVEnicht.
Zusätzliche Einschränkungen bei Verwendung der Methode „Transaktionslogs“
Wenn Sie die CDC-Methode „Transaktionslogs“ verwenden, gelten die folgenden zusätzlichen Einschränkungen:
- Die transparente Datenverschlüsselung (Transparent Data Encryption, TDE) wird nicht unterstützt.
- Die Verschlüsselung auf Spaltenebene wird nicht unterstützt. Daten in diesen Spalten werden durch
NULL-Werte ersetzt. - Bei Verwendung der CDC-Methode „Transaktionslogs“ unterstützt Datastream keine Replikation von Spalten, die dem Quellschema nach der Erstellung eines Streams hinzugefügt wurden. Die neuen Spalten werden nicht in das Ziel repliziert.
- Datastream unterstützt die Anweisung
ROLLBACK TO SAVEPOINTnicht. Solche Rollback-Ereignisse werden ignoriert und nicht in das Ziel repliziert. - Datastream unterstützt CDC nicht für Zeilen, die in den folgenden Arten von Tabellen größer als 8 KB sind:
- Tabellen ohne eindeutigen Index
- Tabellen, die nur einen eindeutigen, nicht gruppierten Index mit einer oder mehreren
Spalten mit variabler Länge (
VARCHAR,VARBINARY,NVARCHAR) enthalten
Datastream unterstützt CDC nicht für Spalten mit großen Objekten (
TEXT,NTEXT,XML,IMAGE) in den folgenden Arten von Tabellen:- Tabellen ohne eindeutigen Index
- Tabellen, die nur einen eindeutigen, nicht gruppierten Index mit einer oder mehreren
Spalten mit variabler Länge (
VARCHAR,VARBINARY,NVARCHAR) enthalten
Wenn Spalten mit großen Objekten nicht im Stream enthalten sind, wird CDC für solche Tabellen nur unterstützt, wenn sie gültige Indizes haben.
Bei Verwendung der Methode „Transaktionslogs“ muss Datastream die Quelldatenbank abfragen, um fehlende Werte zu einem bestimmten Zeitpunkt abzurufen (in einem aktiven Suchvorgang, der als Ergänzung bezeichnet wird), und zwar für die Datentypen
XML,TEXT,NTEXTundIMAGEsowie für Typen mit variabler Länge (z. B.VARCHAR(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 dem Einfügen möglicherweise nicht erfasst. Beachten Sie, dassDELETE-Vorgänge keine Ergänzung auslösen. Diese Einschränkung ist besonders relevant, wenn der Schreibmodus „Nur anhängen“ verwendet wird, bei dem alle Zwischenänderungen erfasst werden müssen.
Nächste Schritte
- Informationen zum Konfigurieren einer SQL Server-Quelle für die Verwendung mit Datastream