Foire aux questions (FAQ) sur le streaming d’événements de modification (CES)

S'applique à : SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceBase de données SQL dans Microsoft Fabric

Voici des réponses aux questions concernant la fonctionnalité de flux d’événements de changement (CES) pour SQL Server 2025 (17.x), Azure SQL Database, Azure SQL Managed Instance et la base de données SQL dans Microsoft Fabric.

Note

Le streaming des événements de changement est actuellement en aperçu, et présente des différences de supportabilité selon les produits. Pendant la préversion, cette fonctionnalité est susceptible de changer.

Compatibilité et exigences

Le CES fonctionne-t-il avec Azure SQL Database ?

Oui. CES est pris en charge dans Azure SQL Database à compter de novembre 2025.

Le modèle de récupération complète est-il nécessaire pour le CES ?

Oui. CES s’appuie sur la lecture du journal des transactions, de sorte que la base de données SQL Server doit être configurée avec le modèle de récupération complète.

Quel est le coût de l’utilisation de CES ?

Pour le CES, l’utilisation d’Azure Event Hubs et Fabric Eventstream est facturée aux tarifs standards. Les frais d’entrée et de sortie s’appliquent également.

Performances et impact

Quel est l’impact attendu sur les performances d’une base de données volumineuse avec des millions de lignes lorsque CES est activé ?

L’impact sur les performances dépend de votre charge de travail et de votre configuration spécifiques. Cependant, il est attendu que CES ait une surcharge inférieure à Change Data Capture (CDC), car il n’y a aucune réécriture des données dans la base de données.

Quelle est la taille maximale de message prise en charge par CES ?

CES utilise ce @max_message_size_kb paramètre pour diviser les grands événements sortants en blocs de messages qui correspondent aux limites de destination des Azure Event Hubs ou au débit configuré de Fabric Eventstream. Ce réglage ne contrôle que la séparation des messages. Cela ne modifie pas la limite de troncature par colonne : avant que CES ne génère l’événement sortant, chaque valeur de colonne diffusée en continu supérieure à 1 Mo est tronquée à 1 Mo.

Le journal des transactions continuera-t-il de croître si CES ne peut pas remettre d’événements (par exemple en raison d’un problème de destination, d’informations d’identification d’autorisation expirées, etc.) ?

Oui. CES garantit une livraison de messages fiable (« au moins une fois »), afin que le journal des transactions ne soit pas tronqué tant que les événements ne seront pas correctement livrés. Si la livraison échoue, le journal augmente jusqu’à ce que le problème soit résolu. Il est important de maintenir l’intégrité de CES en surveillant la remise des messages, les erreurs et l’utilisation du journal des transactions pour les bases de données activées par CES.

Gestion des schémas et des données

Comment CES gère-t-il les modifications de schéma, telles que la suppression d’une colonne ?

CES inclut le schéma de ligne avec chaque événement. Si une opération DDL modifie la table (par exemple, la suppression, le changement de nom ou l’ajout d’une colonne), l’événement DML suivant reflète le schéma mis à jour. CES n’émet pas d’événements pour les opérations DDL elles-mêmes.

Les tables avec des colonnes LOB (par exemple, varchar(max)) sont-elles prises en charge par CES ?

Oui. L’instance CES prend en charge les tables avec des colonnes LOB. Pour chaque table configurée pour le streaming, vous pouvez contrôler si l’ancienne ligne inclut les valeurs de colonnes LOB en utilisant sys.sp_add_object_to_event_stream_group. Chaque valeur LOB diffusée en flux reste soumise à la limite de troncature de 1 Mo par colonne. Configurez l’option de configuration du serveur max text repl size afin de permettre d’écrire plus de 65 536 octets dans les colonnes LOB lorsque CES est activé.

Que se passe-t-il si la valeur d’une colonne en flux est supérieure à 1 Mo ?

Si une ou plusieurs valeurs de colonnes en flux sont supérieures à 1 Mo, le CES tronque chaque valeur de colonne affectée à 1 Mo avant qu’elle ne forme l’événement sortant. La limite s’applique à chaque colonne séparément. Par exemple, si une ligne comporte cinq colonnes et que les trois premières valeurs de colonnes dépassent chacune 1 Mo, CES tronque chacune de ces trois valeurs à 1 Mo, forme l’événement sortant, divise l’événement en blocs de message selon @max_message_size_kb, et envoie chaque morceau à destination.

La troncature des données de colonnes est inconditionnelle. CES n’enregistre pas les erreurs ni les avertissements lorsque cette troncature se produit. Configurez l’option de configuration du serveur max text repl size afin de permettre d’écrire plus de 65 536 octets dans les colonnes LOB lorsque CES est activé.

Une table a-t-elle besoin d’une clé primaire pour utiliser CES ?

Non. L’instance CES ne nécessite pas de clé primaire sur la table.

Quel est le niveau de détail des événements CES ?

Chaque ligne affectée par une opération INSERT, UPDATE ou DELETE est diffusée en tant qu’événement distinct.

Si une transaction modifie plusieurs lignes, sont-elles diffusées en tant qu'événements distincts ou en tant qu'un seul événement ?

Chaque ligne affectée est diffusée en tant qu’événement distinct. Chaque événement inclut des métadonnées de transaction, de sorte que les modifications apportées à la même transaction peuvent être regroupées logiquement sur la destination.

Intégration et configuration

Comment fonctionne CES dans une configuration haute disponibilité (HA) ? Puis-je utiliser une chaîne de connexion DNN ?

L’instance CES ne diffuse que depuis le réplica principal. En cas de basculement, l’instance CES doit être reconfigurée sur le nouveau serveur principal. Vous pouvez vous connecter à la réplique principale en utilisant n’importe quelle méthode prise en charge par SQL Server, y compris un nom de réseau distribué (DNN).

Quels protocoles CES utilisent-ils pour communiquer avec la destination ?

CES prend en charge les protocoles Kafka et AMQP pour Azure Event Hubs et Fabric Eventstream. HTTPS n’est pas pris en charge. À partir du 15 août 2026, le protocole AMQP est obsolège pour les nouveaux groupes de flux sur Azure SQL Database et SQL Database dans Microsoft Fabric. Sur ces plateformes, tous les nouveaux groupes de flux doivent utiliser AzureEventHubs comme le destination_type. Ce type de destination utilise le protocole Kafka. Azure SQL Managed Instance et SQL Server 2025 acceptent AzureEventHubsApacheKafka toujours jusqu’à AzureEventHubsAMQP une future mise à jour. Pour plus de détails, voir dépréciation du protocole AMQP. Si vous utilisez le protocole AMQP sur des groupes de flux existants, réglez l’option de configuration de la version TLS minimale d’Azure Event Hubs à 1.2. CES ne fonctionne pas avec TLS 1.3 via le protocole AMQP.

L’instance CES peut-elle diffuser directement vers Kafka ?

Non. CES prend actuellement en charge uniquement azure Event Hubs (protocole AMQP et Kafka) comme destination.

Le CES peut-il diffuser sur Fabric Eventstream ?

Oui. Vous pouvez connecter CES à Fabric Eventstream en utilisant le point de terminaison personnalisé compatible Azure Event Hubs que propose eventstream. Configurez CES avec la chaîne de connexion eventstream de la même manière que vous le configureriez pour Azure Event Hubs.

Le CES prend-il en charge l’identité gérée Microsoft Entra pour l’authentification avec Azure Event Hubs et Fabric Eventstream ?

Oui. CES prend en compte l’authentification Microsoft Entra dans Azure SQL Database et Azure SQL Managed Instance. Pour SQL Server 2025, l’authentification Microsoft Entra est prise en charge à partir de Cumulative Update 3 (CU3) pour les instances activées par Azure Arc ou fonctionnant sur une VM Azure. L'authentification Microsoft Entra n'est actuellement pas prise en charge dans la base de données SQL dans Microsoft Fabric.

Fonctionnalité et fonctionnalités

CES peut-elle être activée sur une base de données qui utilise déjà la réplication transactionnelle ?

Non. CES ne peut pas être activé sur une base de données configurée avec la réplication transactionnelle.

L’instance CES peut-elle s’exécuter en même temps que la capture de données modifiées (CDC) ?

Non. CES ne peut pas être activé sur une base de données activée avec CDC.

L’instance CES peut-elle être utilisée avec des bases de données mises en miroir Fabric pour SQL Server ?

Non. CES n’est pas pris en charge avec les bases de données répliquées de Fabric pour SQL Server.

Que se passe-t-il si CES est désactivé ? Reprend-il là où il s’était arrêté lorsqu’il est réactivé ?

Si CES est désactivé, il ne peut pas être repris. Vous devez reconfigurer manuellement CES pour continuer à diffuser des événements. Les modifications apportées aux données lors de la désactivation de CES ne sont pas capturées. Seules les modifications apportées après le redémarrage de CES sont diffusées en continu. CES garantit au moins une fois la livraison. Si CES ne parvient pas à remettre un message, il continue de réessayer jusqu’à ce que le message soit correctement remis ou que cess soit désactivé. Si l’instance CES n’est pas désactivée, les livraisons échouées empêchent la troncation du journal jusqu’à ce que la condition d’erreur soit résolue et que le message soit correctement remis. Si CES est désactivé, la troncation du journal reprend et les événements qui se produisent pendant le temps d’arrêt ne sont pas capturés.

Que se passe-t-il si j’effectue une restauration (ou un autre type de migration) d’une base de données configurée pour CES ?

Après la restauration (ou d’autres types de migration de base de données), CES est désactivé et arrêté pour la base de données. Vous devez le reconfigurer pour recommencer la diffusion en continu.

Lorsque CES est activé, peut-il effectuer un instantané initial (« seed ») des données existantes dans les tables ?

Non. Actuellement, CES diffuse uniquement les modifications des données qui se produisent après que CES est activé. Il ne diffuse pas de données dans une table qui existe avant l’activation de CES.

Comment surveiller l’activité CES (par exemple, les événements traités, les erreurs) ?

Utilisez les vues système suivantes pour surveiller l’activité CES :

Dans SQL Server 2025, vous pouvez créer une session xEvent liée au CES et obtenir plus de détails sur l’activité CES et les erreurs potentielles.

  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

Lors de la configuration de la supervision CES xEvent pour Azure SQL Managed Instance, stockez le fichier .xel dans un conteneur Stockage Blob Azure. Vous pouvez observer les informations de suivi de flux d’événements modifiées dans Azure SQL Managed Instance en observant synapse_link_error les événements :

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'
  
);

Le débogage xEvent n’est pas pris en charge pour la résolution des problèmes de CES dans Azure SQL Database.

Vous pouvez surveiller Azure Event Hubs ou Fabric Eventstream et utiliser les métriques et journaux associés.

Combien de temps les erreurs CES sont-elles conservées dans sys.dm_change_feed_errors ?

La liste d’erreurs sys.dm_change_feed_errors se tourne automatiquement. Les erreurs récentes font disparaître les entrées plus anciennes. Les erreurs qui cessent de se produire ne sont pas supprimées immédiatement de la liste ; elles restent jusqu’à ce que de nouvelles erreurs les éliminent ou que la liste disparaisse complètement.

Existe-t-il une limite au nombre de tables pouvant être configurées pour la diffusion en continu ?

Oui. Le CES prend en charge jusqu’à 4 096 groupes de flux, chaque groupe pouvant contenir jusqu’à 40 000 tables.