Applies to:
SQL Server 2025 (17.x)
Azure SQL Database
The following are answers to questions about the Change Event Streaming (CES) feature for SQL Server 2025 (17.x).
Note
Change event streaming is currently in preview for:
- SQL Server 2025 (preview feature database scoped configuration required).
- Azure SQL Database (preview feature database scoped configuration not required).
During preview, this feature is subject to change. For current supportability, see Limitations.
Compatibility and requirements
Does CES work with Azure SQL Database?
Yes. CES is supported in Azure SQL Database starting in November 2025.
Is the full recovery model required for CES?
Yes. CES relies on reading the transaction log, so the SQL Server database must be configured with the full recovery model.
What is the cost of using CES?
For CES, Azure Event Hubs usage is billed at standard rates. Ingress and egress charges also apply.
Performance and impact
What is the expected performance impact on a large database with millions of rows when CES is enabled?
The performance impact depends on your specific workload and configuration. However, CES is expected to have a lower overhead than change data capture (CDC), as there is no writing data back into the database.
What is the maximum message size supported by CES?
The message size is configurable, up to a maximum of 1 MB and should align with the limits of your Azure Event Hubs instance.
Will the transaction log continue to grow if CES can't deliver events (such as due to a destination issue, expired authorization credential, etc)?
Yes. CES ensures reliable ("at least once") message delivery, so the transaction log won't be truncated until events are successfully delivered. If delivery fails, the log grows until the issue is resolved. It's important to maintain the health of CES by monitoring message delivery, errors, and the utilization of the transaction log for databases that have CES enabled.
Schema and data handling
How does CES handle schema changes, such as deleting a column?
CES includes the row schema with each event. If a DDL operation modifies the table (such as deleting, renaming, or adding a column), the next DML event reflects the updated schema. CES doesn't emit events for DDL operations themselves.
Are tables with LOB columns (for example, varchar(max)) supported by CES?
Yes. CES supports tables with LOB columns. For each table configured for streaming, you can configure whether large objects are included in the streamed events.
Does a table need a primary key to use CES?
No. CES doesn't require a primary key on the table.
How granular are CES events?
Each row affected by an INSERT, UPDATE, or DELETE operation is streamed as a separate event.
If a transaction modifies multiple rows, are they streamed as separate events or as one?
Each affected row is streamed as a separate event. Each event includes transaction metadata, so changes from the same transaction can be logically grouped on the destination.
Integration and configuration
How does CES work in a high availability (HA) configuration? Can I use a DNN connection string?
CES only streams from the primary replica. In the event of a failover, CES must be reconfigured on the new primary. You can connect to the primary replica using any method supported by SQL Server, including DNN.
Which protocols does CES use to communicate with the destination?
CES supports AMQP and Kafka protocols for Azure Event Hubs. HTTPS isn't supported.
Can CES stream directly to Kafka?
No. CES currently supports only Azure Event Hubs (AMQP and Kafka protocol) as the destination.
Does CES support Microsoft Entra managed identity for authenticating with Azure Event Hubs?
It depends on the data source. CES on Azure SQL Database supports Microsoft Entra managed identity to authenticate with Azure Event Hubs, where SQL Server 2025 currently does not support Microsoft Entra for authentication.
Functionality and features
Can CES be enabled on a database that already uses transactional replication?
No. CES can't be enabled on a database configured with transactional replication.
Can CES run alongside change data capture (CDC)?
No. CES can't be enabled on a database enabled with CDC.
Can CES be used with Fabric Mirrored Databases for SQL Server?
No. CES isn't supported with Fabric Mirrored Databases for SQL Server.
If CES stops, does it resume from where it left off?
If CES is manually stopped, it doesn't resume automatically. You must manually restart CES to continue streaming events. Changes made while CES was stopped won't be captured. Only changes made after CES is restarted will be streamed. CES guarantees at least once delivery. If CES fails to deliver a message, it continues to retry until the message is successfully delivered, or CES is manually stopped. If CES isn't stopped, failed deliveries prevent log truncation until the error condition is resolved, and the message is successfully delivered. If CES is stopped manually, log truncation resumes, and events that occur during the downtime aren't captured.
Can CES do an initial snapshot ("seed") of existing data in tables when CES is enabled?
No. CES currently only streams changes to data that happen after CES is enabled. It doesn't stream data in a table that exists before CES is enabled.
How can I monitor CES activity (for example, events processed, errors)?
Use the following system views to monitor CES activity:
- sys.dm_change_feed_errors for event delivery errors.
- sys.dm_change_feed_log_scan_sessions for log scan activity.
In SQL Server 2025, you can create CES related XEvent session and get more details on CES activity and potential errors.
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
xEvent debugging isn't supported for troubleshooting CES in Azure SQL Database.
You can monitor Azure Event Hubs and use associated metrics and logs.
Is there a limit to how many tables can be configured for streaming?
Yes. CES supports up to 4,096 streaming groups, with up to 40,000 tables per group.