Edit

Share via


Frequently Asked Questions (FAQ) for Change Event Streaming (CES)

SQL Server 2025 (17.x) Preview

The following are answers to questions about the Change Event Streaming (CES) feature for SQL Server 2025 (17.x) Preview.

Compatibility and requirements

What editions of SQL Server support change event streaming (CES)?

CES is supported on the Developer, Standard, and Enterprise editions of SQL Server 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?

CES is free on supported SQL Server editions. However, 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. By default, higher tiers of Event Hubs support messages up to 1 MB.

Will the transaction log continue to grow if CES can't deliver events (such as due to a destination issue)?

Yes. CES ensures reliable 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 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 BLOB columns (for example, **varchar(max)**) supported by CES?

Yes. CES supports tables with BLOB columns. 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?

No, CES currently doesn't support Microsoft Entra managed identity to authenticate with Azure Event Hubs.

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.

How can I monitor CES activity (for example, events processed, errors)?

Use the following system views to monitor CES activity:

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

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.