Si applica a: SQL Server 2025 (17.x)
Database SQL di Azure
Istanza gestita di SQL di Azure
Database SQL in Microsoft Fabric
Di seguito sono riportate risposte alle domande riguardanti la funzione di change event streaming (CES) per SQL Server 2025 (17.x), database SQL di Azure, Istanza gestita di SQL di Azure e database SQL in Microsoft Fabric.
Annotazioni
Lo streaming degli eventi di modifica è attualmente in anteprima e presenta differenze di supportabilità tra i prodotti. Durante l'anteprima, questa funzionalità è soggetta a modifiche.
Compatibilità e requisiti
CES funziona con il database SQL di Azure?
Sì. CES è supportato nel database SQL di Azure a partire da novembre 2025.
Il modello di recupero completo è necessario per CES?
Sì. CES si basa sulla lettura del log delle transazioni, quindi il database di SQL Server deve essere configurato con il modello di recupero completo.
Qual è il costo dell'uso di CES?
Per CES, l'uso di Hub eventi di Azure e Fabric Eventstream viene fatturato a tariffe standard. Si applicano anche le tariffe di ingresso e di uscita.
Prestazioni e impatto
Qual è l'impatto delle prestazioni previsto su un database di grandi dimensioni con milioni di righe quando è abilitato CES?
L'impatto sulle prestazioni dipende dal carico di lavoro e dalla configurazione specifici. Tuttavia, CES dovrebbe avere un sovraccarico inferiore rispetto al Change Data Capture (CDC), poiché non è necessario scrivere dati nel database.
Qual è la dimensione massima dei messaggi supportata da CES?
CES utilizza questa @max_message_size_kb impostazione per suddividere grandi eventi in uscita in blocchi di messaggi che si adattano ai limiti di destinazione di Hub eventi di Azure o al throughput configurato di Fabric Eventstream. Questa impostazione controlla solo la divisione dei messaggi. Non modifica il limite di troncamento per colonna: prima che CES generi l'evento in uscita, ogni valore di colonna trasmessa in streaming superiore a 1 MB viene troncato a 1 MB.
Il log delle transazioni continuerà a crescere se CES non riesce a recapitare eventi(ad esempio a causa di un problema di destinazione, credenziali di autorizzazione scadute e così via)?
Sì. CES garantisce un recapito affidabile dei messaggi ("almeno una volta"), quindi il log delle transazioni non verrà troncato finché gli eventi non vengono recapitati correttamente. Se il recapito non riesce, il log aumenta fino a quando il problema non viene risolto. È importante mantenere l'integrità del ces monitorando il recapito dei messaggi, gli errori e l'utilizzo del log delle transazioni per i database con CES abilitato.
Schema e gestione dei dati
In che modo CES gestisce le modifiche dello schema, ad esempio l'eliminazione di una colonna?
CES include lo schema di riga con ogni evento. Se un'operazione DDL modifica la tabella , ad esempio l'eliminazione, la ridenominazione o l'aggiunta di una colonna, l'evento DML successivo riflette lo schema aggiornato. CES non genera eventi per le operazioni DDL stesse.
Le tabelle con colonne LOB (ad esempio, varchar(max)) sono supportate da CES?
Sì. CES supporta le tabelle con colonne LOB. Per ogni tabella configurata per lo streaming, puoi controllare se la vecchia riga include i valori delle colonne LOB usando sys.sp_add_object_to_event_stream_group. Ogni valore LOB streamato è comunque soggetto al limite di troncamento di 1 MB per colonna. Configura l'opzione di configurazione del server max text repl size per consentire di scrivere più di 65.536 byte nelle colonne LOB quando CES è abilitato.
Cosa succede se il valore di una colonna streamed è superiore a 1 MB?
Se uno o più valori di colonne streamlate sono maggiori di 1 MB, CES tronca ogni valore di colonna interessato a 1 MB prima che formi l'evento in uscita. Il limite si applica a ogni colonna separatamente. Ad esempio, se una riga ha cinque colonne e i primi tre valori delle colonne sono ciascuno maggiori di 1 MB, CES tronca ciascuno di questi tre valori a 1 MB, forma l'evento in uscita, divide l'evento in blocchi di messaggio secondo @max_message_size_kb, e invia ogni blocco alla destinazione.
La troncatura dei dati a colonna è incondizionata. CES non registra errori o avvisi quando si verifica questa troncatura. Configura l'opzione di configurazione del server max text repl size per consentire di scrivere più di 65.536 byte nelle colonne LOB quando CES è abilitato.
Una tabella ha bisogno di una chiave primaria per utilizzare CES?
No CES non richiede una chiave primaria nella tabella.
Quanto sono granulari gli eventi CES?
Ogni riga interessata da un'operazione INSERT, UPDATEo DELETE viene trasmessa come evento separato.
Se una transazione modifica più righe, vengono trasmessi come eventi separati o come uno?
Ogni riga interessata viene trasmessa come evento separato. Ogni evento include metadati delle transazioni, pertanto le modifiche dalla stessa transazione possono essere raggruppate logicamente nella destinazione.
Integrazione e configurazione
Come funziona CES in una configurazione a disponibilità elevata? È possibile usare una stringa di connessione DNN?
CES trasmette solo dalla replica primaria. In caso di failover, CES deve essere riconfigurato sul nuovo primario. Puoi connetterti alla replica primaria utilizzando qualsiasi metodo supportato da SQL Server, incluso un nome di rete distribuito (DNN).
Quali protocolli vengono usati da CES per comunicare con la destinazione?
CES supporta i protocolli Kafka e AMQP per Hub eventi di Azure e Fabric Eventstream. HTTPS non è supportato. A partire dal 15 agosto 2026, il protocollo AMQP è deprecato per i nuovi gruppi di flussi su database SQL di Azure e SQL database in Microsoft Fabric. Su queste piattaforme, tutti i gruppi di stream appena creati devono usare AzureEventHubs come destination_type. Questo tipo di destinazione utilizza il protocollo Kafka. Istanza gestita di SQL di Azure e SQL Server 2025 accettano AzureEventHubsApacheKafka ancora fino AzureEventHubsAMQP a un aggiornamento futuro. Per dettagli, vedi deprecazione del protocollo AMQP. Se usi il protocollo AMQP su gruppi di stream esistenti, imposta l'opzione di configurazione della versione minima TLS di Hub eventi di Azure su 1.2. CES non funziona con TLS 1.3 tramite il protocollo AMQP.
Ces può trasmettere direttamente a Kafka?
No CES supporta attualmente solo Hub eventi di Azure (protocollo AMQP e Kafka) come destinazione.
Il CES può trasmettere in streaming su Fabric Eventstream?
Sì. Puoi collegare CES a Fabric Eventstream utilizzando l'endpoint di input personalizzato compatibile con Hub eventi di Azure che Eventstream fornisce. Configura CES con la eventstream stringa di connessione nello stesso modo in cui la configureresti per Hub eventi di Azure.
CES supporta l'identità gestita di Microsoft Entra per l'autenticazione con Hub eventi di Azure e Fabric Eventstream?
Sì. CES supporta l'autenticazione Microsoft Entra in database SQL di Azure e Istanza gestita di SQL di Azure. Per SQL Server 2025, l'autenticazione Microsoft Entra è supportata a partire da Cumulative Update 3 (CU3) per le istanze abilitate da Azure Arc o su una VM Azure. L'autenticazione Microsoft Entra attualmente non è supportata nel database SQL in Microsoft Fabric.
Funzionalità e caratteristiche
È possibile abilitare CES in un database che usa già la replica transazionale?
No Non è possibile abilitare CES in un database configurato con la replica transazionale.
CES può essere eseguito insieme a Change Data Capture (CDC)?
No Ces non può essere abilitato in un database abilitato con CDC.
È possibile usare CES con i Database con mirroring tramite Fabric per SQL Server?
No CES non è supportato con Database Mirrorati su Fabric per SQL Server.
Cosa accade se CES è disabilitato? Riprende da dove è stato interrotto quando viene riattivato?
Se CES è disabilitato, non può essere ripreso. È necessario riconfigurare manualmente CES per continuare a trasmettere gli eventi. Le modifiche apportate ai dati mentre ces è stato disabilitato non vengono acquisite. Vengono trasmessi solo le modifiche apportate dopo il riavvio del ces. CES garantisce almeno una volta la consegna. Se CES non recapita un messaggio, continua a riprovare fino a quando il messaggio non viene recapitato correttamente o CES non viene disabilitato. Se CES non è disabilitato, i recapito non riusciti impediscono il troncamento del log fino alla risoluzione della condizione di errore e il messaggio viene recapitato correttamente. Se CES è disabilitato, il troncamento del log riprende e gli eventi che si verificano durante il tempo di inattività non vengono acquisiti.
Cosa accade se si esegue un ripristino (o un altro tipo di migrazione) di un database configurato per CES?
Dopo il ripristino (o altri tipi di migrazione del database), CES viene disabilitato e arrestato per il database. È necessario riconfigurarlo per avviare nuovamente lo streaming.
Ces può eseguire uno snapshot iniziale ("valore di inizializzazione") dei dati esistenti nelle tabelle quando è abilitato CES?
No CES attualmente trasmette solo le modifiche ai dati che si verificano dopo l'abilitazione del ces. Non trasmette i dati in una tabella esistente prima dell'abilitazione di CES.
Come è possibile monitorare l'attività CES (ad esempio, eventi elaborati, errori)?
Usare le viste di sistema seguenti per monitorare l'attività CES:
- sys.dm_change_feed_errors per gli errori di recapito degli eventi.
- sys.dm_change_feed_log_scan_sessions per l'attività di scansione dei log.
In SQL Server 2025, puoi creare una sessione xEvent correlata al CES e ottenere maggiori dettagli sull'attività del CES e sui possibili errori.
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
Quando si configura il monitoraggio xEvent CES per Istanza SQL gestita di Azure, archiviare il file .xel in un contenitore di Archiviazione BLOB di Azure. Puoi osservare le informazioni di traccia di event streaming di cambiamento in Istanza gestita di SQL di Azure osservando synapse_link_error eventi:
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'
);
Il debug xEvent non è supportato per la risoluzione dei problemi di CES nel database SQL di Azure.
Puoi monitorare Hub eventi di Azure o Fabric Eventstream e usare metriche e log associati.
Per quanto tempo vengono conservati gli errori CES in sys.dm_change_feed_errors?
La lista di errori sys.dm_change_feed_errors ruota automaticamente. Gli errori più recenti sostituiscono le voci precedenti. Gli errori che smettono di verificarsi non vengono rimossi immediatamente dalla lista; Rimangono finché errori più recenti non li eliminano o la lista non si risolve completamente.
Esiste un limite al numero di tabelle che è possibile configurare per lo streaming?
Sì. CES supporta fino a 4.096 gruppi di streaming, con fino a 40.000 tabelle per gruppo.