Preguntas Frecuentes (FAQ) para Change Event Streaming (CES)

Se aplica a: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceBase de datos SQL en Microsoft Fabric

A continuación se presentan respuestas a preguntas sobre la función de streaming de eventos de cambio (CES) para SQL Server 2025 (17.x), Azure SQL Database, Azure SQL Managed Instance y base de datos SQL en Microsoft Fabric.

Nota:

La transmisión de eventos de cambio está actualmente en vista previa y presenta diferencias en la compatibilidad entre productos. Durante la versión preliminar, esta característica está sujeta a cambios.

Compatibilidad y requisitos

¿Funciona CES con Azure SQL Database?

Sí. CES es compatible con Azure SQL Database a partir de noviembre de 2025.

¿Es necesario el modelo de recuperación completa para CES?

Sí. CES se basa en leer el registro de transacciones, por lo que la base de datos de SQL Server debe configurarse con el modelo de recuperación completa.

¿Cuál es el costo de usar CES?

Para CES, el uso de Azure Event Hubs y Fabric Eventstream se factura a tarifas estándar. También se aplican cargos de entrada y salida.

Rendimiento e impacto

¿Cuál es el impacto esperado en el rendimiento de una base de datos grande con millones de filas cuando CES está habilitado?

El impacto en el rendimiento depende de la carga de trabajo y la configuración específicas. Sin embargo, se espera que CES tenga una sobrecarga menor que la captura de cambios de datos (CDC), porque no se escriben datos de nuevo en la base de datos.

¿Cuál es el tamaño máximo de mensaje admitido por CES?

CES utiliza esta @max_message_size_kb configuración para dividir grandes eventos salientes en bloques de mensajes que se ajustan a los límites de destino de Azure Event Hubs o al rendimiento configurado de Fabric Eventstream. Esta configuración controla solo la división de mensajes. No cambia el límite de truncamiento por columna: antes de que CES forme el evento saliente, cada valor de columna en flujo mayor a 1 MB se trunca a 1 MB.

¿Seguirá creciendo el registro de transacciones si CES no puede entregar eventos (por ejemplo, debido a un problema de destino, credenciales de autorización expiradas, etc.)?

Sí. CES garantiza una entrega de mensajes confiable ("al menos una vez"), por lo que el registro de transacciones no se truncará hasta que los eventos se entreguen correctamente. Si se produce un error en la entrega, el registro crece hasta que se resuelve el problema. Es importante mantener el estado de CES mediante la supervisión de la entrega de mensajes, los errores y el uso del registro de transacciones para las bases de datos que tienen CES habilitado.

Control de esquemas y datos

¿Cómo controla CES los cambios de esquema, como eliminar una columna?

CES incluye el esquema de fila con cada evento. Si una operación DDL modifica la tabla (como eliminar, cambiar el nombre o agregar una columna), el siguiente evento DML refleja el esquema actualizado. CES no emite eventos para las propias operaciones DDL.

¿Las tablas con columnas LOB (por ejemplo, varchar(max)) son compatibles con CES?

Sí. CES admite tablas con columnas LOB. Para cada tabla configurada para streaming, puedes controlar si la fila antigua incluye valores de columna LOB usando sys.sp_add_object_to_event_stream_group. Cada valor de LOB transmitido sigue estando sujeto al límite de truncamiento de 1 MB por columna. Configure la opción de configuración del servidor max text repl size para permitir que se escriban más de 65.536 bytes en columnas LOB cuando CES está habilitado.

¿Qué ocurre si el valor de una columna en streaming es mayor que 1 MB?

Si uno o más valores de columna en flujo son mayores a 1 MB, CES trunca cada valor de columna afectado a 1 MB antes de que forme el evento saliente. El límite se aplica a cada columna por separado. Por ejemplo, si una fila tiene cinco columnas y los tres primeros valores de columna son mayores que 1 MB, CES trunca cada uno de esos tres valores a 1 MB, forma el evento saliente, divide el evento en bloques de mensaje según @max_message_size_kb, y envía cada fragmento al destino.

El truncamiento de datos de columna es incondicional. CES no registra errores ni advertencias cuando se produce este truncamiento. Configure la opción de configuración del servidor max text repl size para permitir que se escriban más de 65.536 bytes en columnas LOB cuando CES está habilitado.

¿Necesita una tabla una clave principal para usar CES?

No. CES no requiere una clave primaria en la tabla.

¿Qué nivel de detalle tienen los eventos CES?

Cada fila afectada por una INSERT, UPDATE, o DELETE operación se transmite como un evento independiente.

Si una transacción modifica varias filas, ¿se transmiten como eventos independientes o como una?

Cada fila afectada se transmite como un evento independiente. Cada evento incluye metadatos de transacción, por lo que los cambios de la misma transacción se pueden agrupar lógicamente en el destino.

Integración y configuración

¿Cómo funciona CES en una configuración de alta disponibilidad (HA)? ¿Puedo usar una cadena de conexión DNN?

CES solo transmite desde la réplica principal. En caso de conmutación por error, CES debe volver a configurarse en el nuevo primario. Puedes conectarte a la réplica principal usando cualquier método compatible con SQL Server, incluyendo un nombre de red distribuida (DNN).

¿Qué protocolos usa CES para comunicarse con el destino?

CES es compatible con protocolos Kafka y AMQP para Azure Event Hubs y Fabric Eventstream. No se admite HTTPS. A partir del 15 de agosto de 2026, el protocolo AMQP queda obsoleto para nuevos grupos de flujos en Azure SQL Database y SQL Database en Microsoft Fabric. En estas plataformas, todos los grupos de stream recién creados deben usar AzureEventHubs como el destination_type. Este tipo de destino utiliza el protocolo Kafka. Azure SQL Managed Instance y SQL Server 2025 siguen aceptando AzureEventHubsApacheKafka y AzureEventHubsAMQP hasta una actualización futura. Para más detalles, véase la deprecación del protocolo AMQP. Si usas el protocolo AMQP en grupos de flujo existentes, configura la opción de configuración de la versión mínima TLS de Azure Event Hubs en 1.2. CES no funciona con TLS 1.3 sobre el protocolo AMQP.

¿CES puede transmitir directamente a Kafka?

No. CES actualmente solo admite Azure Event Hubs (protocolo AMQP y Kafka) como destino.

¿Puede el CES retransmitir en Fabric Eventstream?

Sí. Puedes conectar CES a Fabric Eventstream usando el endpoint de entrada personalizado compatible con Azure Event Hubs que proporciona eventstream. Configura CES con la cadena de conexión de eventstream de la misma manera que lo configurarías para Azure Event Hubs.

¿Soporta CES la identidad gestionada de Microsoft Entra para autenticación con Azure Event Hubs y Fabric Eventstream?

Sí. CES soporta la autenticación Microsoft Entra en Azure SQL Database y Azure SQL Managed Instance. Para SQL Server 2025, se soporta la autenticación Microsoft Entra a partir de Cumulative Update 3 (CU3) para instancias habilitadas por Azure Arc o ejecutándose en una máquina virtual de Azure. La autenticación Microsoft Entra no está actualmente soportada en la base de datos SQL en Microsoft Fabric.

Funcionalidad y características

¿Se puede habilitar CES en una base de datos que ya usa la replicación transaccional?

No. CES no se puede habilitar en una base de datos configurada con replicación transaccional.

¿Se puede ejecutar CES junto con la captura de datos modificados (CDC)?

No. CES no se puede habilitar en una base de datos habilitada con CDC.

¿Se puede utilizar CES con bases de datos reflejadas de Fabric para SQL Server?

¿Qué ocurre si CES está deshabilitado? ¿Se reanuda desde dónde se dejó cuando se vuelve a habilitar?

Si CES está deshabilitado, no se puede reanudar. Debe volver a configurar CES manualmente para continuar con los eventos de streaming. Los cambios de datos realizados mientras CES estaba deshabilitado no se capturan. Solo se transmiten los cambios realizados después de reiniciar CES. CES garantiza al menos una entrega . Si CES no entrega un mensaje, continúa reintentando hasta que el mensaje se entregue correctamente o CES esté deshabilitado. Si CES no está deshabilitado, las entregas fallidas impiden el truncamiento del log hasta que se resuelva el estado de error y el mensaje se entregue correctamente. Si CES está deshabilitado, el truncamiento del registro se reanuda y los eventos que se producen durante el tiempo de inactividad no se capturan.

¿Qué ocurre si hago una restauración (u otro tipo de migración) de una base de datos configurada para CES?

Después de la restauración (u otros tipos de migración de base de datos), CES queda deshabilitado y detenido para la base de datos. Tiene que volver a configurarlo para volver a iniciar el streaming.

¿Puede CES realizar una instantánea inicial ("semilla") de los datos existentes en las tablas cuando CES está habilitado?

No. CES en este momento solo transmite los cambios a los datos que se producen después de habilitar CES. No transmite datos en una tabla que existe antes de habilitar CES.

¿Cómo puedo supervisar la actividad de CES (por ejemplo, eventos procesados, errores)?

Utilice las siguientes vistas del sistema para supervisar la actividad de CES:

En SQL Server 2025, puedes crear una sesión xEvent relacionada con CES y obtener más detalles sobre la actividad de CES y posibles errores.

  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

Al configurar el monitoreo de xEvent de CES para Azure SQL Managed Instance, almacene su archivo .xel en un contenedor de Azure Blob Storage. Puedes observar cambios en la información de rastreo de streaming de eventos en Azure SQL Managed Instance observando synapse_link_error eventos:

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

La depuración de xEvent no se admite para la resolución de problemas de CES en Azure SQL Database.

Puedes monitorizar Azure Event Hubs o Fabric Eventstream y usar métricas y registros asociados.

¿Cuánto tiempo se conservan los errores de CES en sys.dm_change_feed_errors?

La lista de errores de sys.dm_change_feed_errors rota automáticamente. Errores más recientes desplazan las entradas anteriores. Los errores que dejan de ocurrir no se eliminan de la lista inmediatamente; permanecen hasta que errores recientes los eliminan o la lista se borra por completo.

¿Hay un límite en el número de tablas que se pueden configurar para el streaming?

Sí. CES soporta hasta 4.096 grupos de flujo, con hasta 40.000 tablas por grupo.