Gilt für: SQL Server 2025 (17.x)
Azure SQL-Datenbank
Azure SQL Managed Instance
SQL-Datenbank in Microsoft Fabric
Im Folgenden finden Sie Antworten auf Fragen zur Change Event Streaming (CES)-Funktion für SQL Server 2025 (17.x), Azure SQL-Datenbank, Azure SQL Managed Instance und SQL Database in Microsoft Fabric.
Hinweis
Das Change Event Streaming befindet sich derzeit in der Vorschau und weist Unterschiede in der Unterstützbarkeit zwischen den Produkten auf. Während der Vorschau kann dieses Feature geändert werden.
Kompatibilität und Anforderungen
Funktioniert CES mit Azure SQL-Datenbank?
Ja. CES wird ab November 2025 in der Azure SQL-Datenbank unterstützt.
Ist das vollständige Wiederherstellungsmodell für CES erforderlich?
Ja. CES basiert auf dem Lesen des Transaktionsprotokolls, sodass die SQL Server-Datenbank mit dem vollständigen Wiederherstellungsmodell konfiguriert werden muss.
Wie hoch sind die Nutzungskosten von CES?
Für CES werden die Nutzung von Azure Event Hubs und Fabric Eventstream zu Standardsätzen abgerechnet. Es gelten auch Ein- und Ausstiegsgebühren.
Leistung und Auswirkung
Welche Auswirkungen hat die erwartete Leistung auf eine große Datenbank mit Millionen von Zeilen, wenn CES aktiviert ist?
Die Auswirkungen auf die Leistung hängen von Ihrer spezifischen Workload und Konfiguration ab. Es wird jedoch erwartet, dass CES einen geringeren Overhead hat als die Change Data Capture (CDC), da keine Daten in die Datenbank zurückgeschrieben werden.
Welche maximale Nachrichtengröße wird von CES unterstützt?
CES nutzt die Einstellung@max_message_size_kb, um große ausgehende Ereignisse in Nachrichtenabschnitte zu unterteilen, die den Ziellimits von Azure Event Hubs oder dem konfigurierten Fabric Eventstream-Durchsatz entsprechen. Diese Einstellung steuert nur das Aufteilen von Nachrichten. Das ändert nichts an der Kürzungsgrenze pro Spalte: Bevor CES das ausgehende Ereignis erstellt, wird jeder gestreamte Spaltenwert, der größer als 1 MB ist, auf 1 MB gekürzt.
Wird das Transaktionsprotokoll weiter wachsen, wenn CES keine Ereignisse liefern kann (z. B. aufgrund eines Zielproblems oder abgelaufener Autorisierungsnachweise)?
Ja. CES stellt eine zuverlässige Nachrichtenzustellung („mindestens einmal”) sicher, sodass das Transaktionsprotokoll erst gekürzt wird, wenn Ereignisse erfolgreich zugestellt werden. Wenn die Zustellung fehlschlägt, wächst das Protokoll, bis das Problem behoben ist. Es ist wichtig, den Status von CES aufrechtzuerhalten, indem nachrichtenübermittlung, Fehler und die Verwendung des Transaktionsprotokolls für Datenbanken überwacht werden, die CES aktiviert haben.
Schema- und Datenverarbeitung
Wie behandelt CES Schemaänderungen, z. B. das Löschen einer Spalte?
CES enthält das Zeilenschema für jedes Ereignis. Wenn ein DDL-Vorgang die Tabelle ändert (z. B. Löschen, Umbenennen oder Hinzufügen einer Spalte), spiegelt das nächste DML-Ereignis das aktualisierte Schema wider. CES gibt selbst keine Ereignisse für DDL-Vorgänge aus.
Werden Tabellen mit LOB-Spalten (z. B. varchar(max)) von CES unterstützt?
Ja. CES unterstützt Tabellen mit LOB-Spalten. Für jede für das Streaming konfigurierte Tabelle kann man mit sys.sp_add_object_to_event_stream_group steuern, ob die alte Zeile LOB-Spaltenwerte enthält. Jeder gestreamte LOB-Wert unterliegt weiterhin der Kürzungsgrenze von 1 MB pro Spalte. Konfigurieren Sie die Konfigurationsoption für die maximale Textrepl-Servergröße so, dass mehr als 65.536 Bytes in LOB-Spalten geschrieben werden können, wenn CES aktiviert ist.
Was passiert, wenn ein gestreamter Spaltenwert größer als 1 MB ist?
Wenn eine oder mehrere gestreamte Spaltenwerte größer als 1 MB sind, verkürzt CES jeden betroffenen Spaltenwert auf 1 MB, bevor das ausgehende Ereignis entsteht. Das Limit gilt für jede Spalte einzeln. Wenn zum Beispiel eine Zeile fünf Spalten hat und die ersten drei Spaltenwerte jeweils größer als 1 MB sind, kürzt CES jeden dieser drei Werte auf 1 MB, bildet das ausgehende Ereignis, teilt das Ereignis entsprechend in @max_message_size_kbNachrichtenabschnitte auf und sendet jeden Chunk an das Ziel.
Die Abkürzung von Spaltendaten ist bedingungslos. CES protokolliert keine Fehler oder Warnungen, wenn diese Abkürzung auftritt. Konfigurieren Sie die Konfigurationsoption für die maximale Textrepl-Servergröße so, dass mehr als 65.536 Bytes in LOB-Spalten geschrieben werden können, wenn CES aktiviert ist.
Benötigt eine Tabelle einen Primärschlüssel, um CES zu verwenden?
Nein. CES erfordert keinen Primärschlüssel in der Tabelle.
Wie präzise sind CES-Ereignisse?
Jede Zeile, die von einem INSERT, UPDATE, oder DELETE Vorgang betroffen ist, wird als separates Ereignis gestreamt.
Wenn eine Transaktion mehrere Zeilen ändert, werden sie als separate Ereignisse oder als eine gestreamt?
Jede betroffene Zeile wird als separates Ereignis gestreamt. Jedes Ereignis enthält Transaktionsmetadaten, sodass Änderungen aus derselben Transaktion logisch am Ziel gruppiert werden können.
Integration und Konfiguration
Wie funktioniert CES in einer Hochverfügbarkeitskonfiguration (HA)? Kann ich eine DNN-Verbindungszeichenfolge verwenden?
CES streamt nur aus dem primären Replikat. Im Falle eines Failovers muss CES auf dem neuen Primärsystem neu konfiguriert werden. Sie können sich mit jeder vom SQL Server unterstützten Methode mit der primären Replik verbinden, einschließlich eines verteilten Netzwerknamens (DNN).
Welche Protokolle verwendet CES für die Kommunikation mit dem Ziel?
CES unterstützt Kafka- und AMQP-Protokolle für Azure Event Hubs und Fabric Eventstream. HTTPS wird nicht unterstützt. Ab dem 15. August 2026 ist das AMQP-Protokoll für neue Stream-Gruppen in Azure SQL-Datenbank und SQL-Datenbanken in Microsoft Fabric eingestellt. Auf diesen Plattformen müssen AzureEventHubs alle neu erstellten Stream-Gruppen als die destination_typeverwenden. Dieser Zieltyp verwendet das Kafka-Protokoll. Azure SQL Managed Instance und SQL Server 2025 akzeptieren AzureEventHubsApacheKafka es weiterhin bis AzureEventHubsAMQP zu einem zukünftigen Update. Für Details siehe AMQP-Protokoll-Deprecation. Wenn du das AMQP-Protokoll bei bestehenden Stream-Gruppen verwendest, setze die Azure Event Hubs Minimum TLS-Version-Konfigurationsoption auf 1.2. CES funktioniert nicht mit TLS 1.3 über das AMQP-Protokoll.
Kann CES direkt nach Kafka streamen?
Nein. CES unterstützt derzeit nur Azure Event Hubs (AMQP- und Kafka-Protokoll) als Ziel.
Kann CES auf Fabric Eventstream streamen?
Ja. Sie können CES mit Fabric Eventstream verbinden, indem Sie den Azure Event Hubs-kompatiblen benutzerdefinierten Eingabe-Endpunkt verwenden, den Eventstream bereitstellt. Konfigurieren Sie CES mit der Eventstream-Verbindungszeichenfolge genauso, wie Sie es für Azure Event Hubs konfigurieren würden.
Unterstützt CES Microsoft Entra Managed Identity für die Authentifizierung mit Azure Event Hubs und Fabric Eventstream?
Ja. CES unterstützt Microsoft Entra-Authentifizierung in Azure SQL-Datenbank und Azure SQL Managed Instance. Für SQL Server 2025 wird die Microsoft Entra-Authentifizierung ab Cumulative Update 3 (CU3) für Instanzen unterstützt, die durch Azure Arc aktiviert sind oder auf einer Azure-VM laufen. Microsoft Entra-Authentifizierung wird derzeit in SQL-Datenbanken in Microsoft Fabric nicht unterstützt.
Funktionalität und Features
Kann CES für eine Datenbank aktiviert werden, die bereits die Transaktionsreplikation verwendet?
Nein. CES kann für eine Datenbank, die mit der Transaktionsreplikation konfiguriert ist, nicht aktiviert werden.
Kann CES zusammen mit der Änderungsdatenerfassung (CDC) ausgeführt werden?
Nein. CES kann nicht auf einer Datenbank aktiviert werden, die mit CDC aktiviert ist.
Kann CES mit Fabric Mirrored Databases für SQL Server verwendet werden?
Nein. CES wird mit Fabric Mirrored Databases für SQL Server nicht unterstützt.
Was geschieht, wenn CES deaktiviert ist? Setzt er/sie/es dort fort, wo er/sie/es aufgehört hat, wenn er/sie/es erneut aktiviert wird?
Wenn CES deaktiviert ist, kann sie nicht fortgesetzt werden. Sie müssen CES manuell neu konfigurieren, um Streamingereignisse fortzusetzen. Datenänderungen, die vorgenommen wurden, während CES deaktiviert wurde, werden nicht erfasst. Nur Änderungen, die nach dem Neustart der CES vorgenommen wurden, werden gestreamt. CES garantiert mindestens eine Lieferung. Wenn CES eine Nachricht nicht übermittelt, wird der Zustellversuch von CES fortgesetzt, bis die Nachricht erfolgreich übermittelt wurde oder CES deaktiviert ist. Wenn CES nicht deaktiviert ist, verhindern fehlgeschlagene Zustellungen eine Kürzung des Protokolls, bis die Fehlerbedingung behoben und die Nachricht erfolgreich zugestellt wird. Wenn CES deaktiviert ist, wird die Protokollverkürzung fortgesetzt, und Ereignisse, die während der Ausfallzeit auftreten, werden nicht aufgezeichnet.
Was geschieht, wenn ich eine Wiederherstellung (oder eine andere Art von Migration) einer Datenbank verfüre, die für CES konfiguriert wurde?
Nach der Wiederherstellung (oder bei anderen Arten der Datenbankmigration) wird CES für die Datenbank deaktiviert und gestoppt. Sie müssen es neu konfigurieren, um das Streaming erneut zu starten.
Kann CES eine initiale Momentaufnahme ("seed") vorhandener Daten in Tabellen erstellen, wenn CES aktiviert ist?
Nein. CES streamt derzeit nur Änderungen an Daten, die nach der Aktivierung von CES auftreten. Es werden keine Daten in einer Tabelle gestreamt, die vorhanden ist, bevor CES aktiviert ist.
Wie kann ich DIE CES-Aktivität überwachen (z. B. verarbeitete Ereignisse, Fehler)?
Verwenden Sie die folgenden Systemansichten, um die CES-Aktivität zu überwachen:
- sys.dm_change_feed_errors für Fehler bei der Übermittlung von Ereignissen.
- sys.dm_change_feed_log_scan_sessions für die Protokollscanaktivität.
In SQL Server 2025 können Sie eine CES-bezogene xEvent-Sitzung erstellen und mehr Details zu CES-Aktivitäten und möglichen Fehlern erhalten.
CREATE EVENT SESSION ChangeEventStreaming
ON SERVER
ADD EVENT sqlserver.synapse_link_error
(
)
ADD TARGET package0.event_file
(SET filename=N'C:\temp\YourSession_Target1.xel');
GO
Speichern Sie beim Konfigurieren der CES xEvent-Überwachung für die verwaltete Azure SQL-Instanz Ihre .xel Datei in einem Azure Blob Storage-Container. Sie können Change Event Streaming Trace-Informationen in Azure SQL Managed Instance beobachten, indem Sie Ereignisse beobachtensynapse_link_error:
CREATE CREDENTIAL
[your blob container URL here] --make sure to not leave / at the end
WITH IDENTITY = 'MANAGED IDENTITY';
DROP EVENT SESSION ChangeEventStreaming ON SERVER
CREATE EVENT SESSION ChangeEventStreaming
ON SERVER
ADD EVENT sqlserver.synapse_link_error
(
)
ADD TARGET package0.event_file
(
SET filename = N'https://[your container URL]/cessession.xel'
);
xEvent-Debugging wird für die Problembehandlung von CES in azure SQL-Datenbank nicht unterstützt.
Sie können Azure Event Hubs oder Fabric Eventstream überwachen und zugehörige Metriken und Protokolle verwenden.
Wie lange werden CES-Fehler in sys.dm_change_feed_errors gespeichert?
Die sys.dm_change_feed_errors Fehlerliste rotiert automatisch. Neuere Fehler verschieben frühere Einträge. Fehler, die nicht mehr auftreten, werden nicht sofort aus der Liste entfernt; Sie bleiben bestehen, bis neuere Fehler sie verdrängen oder die Liste vollständig gelöscht ist.
Gibt es ein Limit für die Anzahl von Tabellen, die für das Streaming konfiguriert werden können?
Ja. CES unterstützt bis zu 4.096 Stream-Gruppen mit bis zu 40.000 Tabellen pro Gruppe.