Perguntas frequentes (FAQ) sobre Streaming de Eventos de Alteração (CES)

Aplica-se a: SQL Server 2025 (17.x) Banco de Dados SQL do AzureInstância Gerenciada de SQL do Azurebanco de dados SQL no Microsoft Fabric

A seguir, estão respostas para perguntas sobre o recurso de streaming de eventos de mudança (CES) para SQL Server 2025 (17.x), Banco de Dados SQL do Azure, Instância Gerenciada de SQL do Azure e banco de dados SQL no Microsoft Fabric.

Observação

O streaming de eventos de mudança está atualmente em prévia e apresenta diferenças de suporte entre os produtos. Durante a visualização, esse recurso está sujeito a alterações.

Compatibilidade e requisitos

O CES funciona com o Banco de Dados SQL do Azure?

Sim. O CES tem suporte no Banco de Dados SQL do Azure a partir de novembro de 2025.

O modelo de recuperação completa é necessário para o CES?

Sim. O CES depende da leitura do log de transações, portanto, o banco de dados do SQL Server deve ser configurado com o modelo de recuperação completo.

Qual é o custo de usar o CES?

Para CES, o uso do Hubs de Eventos do Azure e Fabric Eventstream é cobrado com tarifas padrão. Os encargos de entrada e saída também se aplicam.

Desempenho e impacto

Qual é o impacto de desempenho esperado em um banco de dados grande com milhões de linhas quando o CES está habilitado?

O impacto no desempenho depende da carga de trabalho e da configuração específicas. No entanto, espera-se que o CES tenha uma sobrecarga menor do que o CDC (Change Data Capture, captura de dados de alteração), pois não há gravação de dados de volta no banco de dados.

Qual é o tamanho máximo da mensagem compatível com o CES?

A CES usa essa @max_message_size_kb configuração para dividir grandes eventos de saída em blocos de mensagens que se encaixam nos limites de destino do Hubs de Eventos do Azure ou na taxa de transferência configurada do Fabric Eventstream. Essa configuração controla apenas a divisão de mensagens. Isso não altera o limite de truncamento por coluna: antes que o CES forme o evento de saída, cada valor de coluna em fluxo maior que 1 MB é truncado para 1 MB.

O log de transações continuará a aumentar se o CES não puder fornecer eventos (como devido a um problema de destino, credencial de autorização expirada etc.)?

Sim. O CES garante a entrega de mensagens confiável ("pelo menos uma vez"), portanto, o log de transações não será truncado até que os eventos sejam entregues com êxito. Se a entrega falhar, o log aumentará até que o problema seja resolvido. É importante manter a integridade do CES monitorando a entrega de mensagens, os erros e a utilização do log de transações para bancos de dados que têm o CES habilitado.

Manipulação de esquemas e dados

Como o CES lida com alterações de esquema, como excluir uma coluna?

O CES inclui o esquema de linha com cada evento. Se uma operação DDL modificar a tabela (como excluir, renomear ou adicionar uma coluna), o próximo evento DML refletirá o esquema atualizado. O CES não emite eventos para operações DDL em si.

As tabelas com colunas LOB (por exemplo, varchar(max)) têm suporte do CES?

Sim. O CES dá suporte a tabelas com colunas LOB. Para cada tabela configurada para streaming, você pode controlar se a linha antiga inclui valores de colunas LOB usando sys.sp_add_object_to_event_stream_group. Cada valor de LOB transmitido ainda está sujeito ao limite de truncamento de 1 MB por coluna. Configure a opção de configuração do servidor max text repl size para permitir que mais de 65.536 bytes sejam gravados em colunas LOB quando o CES estiver ativado.

O que acontece se o valor de uma coluna transmitida for maior que 1 MB?

Se um ou mais valores de coluna transmitida forem maiores que 1 MB, o CES trunca cada valor de coluna afetado para 1 MB antes que forme o evento de saída. O limite se aplica a cada coluna separadamente. Por exemplo, se uma linha tem cinco colunas e os três primeiros valores das colunas forem maiores que 1 MB, o CES trunca cada um desses três valores para 1 MB, forma o evento de saída, divide o evento em blocos de mensagem de acordo com @max_message_size_kb, e envia cada pedaço para o destino.

O truncamento de dados de coluna é incondicional. O CES não registra erros ou avisos quando essa truncação ocorre. Configure a opção de configuração do servidor max text repl size para permitir que mais de 65.536 bytes sejam gravados em colunas LOB quando o CES estiver ativado.

Uma tabela precisa de uma chave primária para usar o CES?

Não. O CES não requer uma chave primária na tabela.

Quão granulares são os eventos CES?

Cada linha afetada por um INSERT, UPDATEou DELETE operação é transmitida como um evento separado.

Se uma transação modificar várias linhas, elas serão transmitidas como eventos separados ou como uma?

Cada linha afetada é transmitida como um evento separado. Cada evento inclui metadados de transação, portanto, as alterações da mesma transação podem ser agrupadas logicamente no destino.

Integração e configuração

Como o CES funciona em uma configuração de ALTA DISPONIBILIDADE (HA)? Posso usar uma cadeia de conexão DNN?

O CES é transmitido somente da réplica primária. No caso de um failover, o CES deve ser reconfigurado no novo servidor primário. Você pode se conectar à réplica principal usando qualquer método suportado pelo SQL Server, incluindo um nome de rede distribuída (DNN).

Quais protocolos o CES usa para se comunicar com o destino?

O CES suporta protocolos Kafka e AMQP para Hubs de Eventos do Azure e Fabric Eventstream. Não há suporte para HTTPS. A partir de 15 de agosto de 2026, o protocolo AMQP está obsoleto para novos grupos de stream no Banco de Dados SQL do Azure e SQL Database no Microsoft Fabric. Nessas plataformas, todos os grupos de stream recém-criados devem usar AzureEventHubs como o destination_type. Esse tipo de destino utiliza o protocolo Kafka. Instância Gerenciada de SQL do Azure e SQL Server 2025 ainda aceitam AzureEventHubsApacheKafka até AzureEventHubsAMQP uma atualização futura. Para detalhes, veja deprecação do protocolo AMQP. Se você usar o protocolo AMQP em grupos de stream existentes, defina a opção de configuração da versão mínima TLS do Hubs de Eventos do Azure para 1.2. O CES não funciona com TLS 1.3 sobre o protocolo AMQP.

Pode o CES transmitir diretamente para o Kafka?

Não. Atualmente, o CES dá suporte apenas aos Hubs de Eventos do Azure (protocolo AMQP e Kafka) como o destino.

A CES pode transmitir para o Fabric Eventstream?

Sim. Você pode conectar o CES ao Fabric Eventstream usando o endpoint de entrada personalizado compatível com Hubs de Eventos do Azure que o evento fornece fornece. Configure o CES com a eventstream cadeia de conexão da mesma forma que configuraria para o Hubs de Eventos do Azure.

A CES suporta identidade gerenciada Microsoft Entra para autenticação com Hubs de Eventos do Azure e Fabric Eventstream?

Sim. O CES suporta autenticação Microsoft Entra no Banco de Dados SQL do Azure e no Instância Gerenciada de SQL do Azure. Para o SQL Server 2025, a autenticação Microsoft Entra é suportada a partir da Cumulative Update 3 (CU3) para instâncias habilitadas pelo Azure Arc ou rodando em uma VM Azure. A autenticação Microsoft Entra atualmente não é suportada no banco de dados SQL no Microsoft Fabric.

Funcionalidade e funcionalidades

O CES pode ser habilitado em um banco de dados que já usa a replicação transacional?

Não. O CES não pode ser habilitado em um banco de dados configurado com replicação transacional.

O CES pode ser executado junto com a captura de dados de alteração (CDC)?

Não. O CES não pode ser habilitado em um banco de dados habilitado com CDC.

O CES pode ser usado com Bancos de Dados Espelhados do Fabric para SQL Server?

Não. Não há suporte para CES com Bancos de Dados Espelhados do Fabric para SQL Server.

O que acontece se o CES estiver desabilitado? Ele retoma de onde parou quando for reabilitado?

Se o CES estiver desabilitado, ele não poderá ser retomado. Você deve reconfigurar manualmente o CES para continuar os eventos de streaming. As alterações de dados feitas enquanto o CES estava desabilitado não são capturadas. Somente as alterações feitas após a reinicialização do CES são transmitidas. O CES garante pelo menos uma vez a entrega. Se o CES não entregar uma mensagem, ele continuará a tentar novamente até que a mensagem seja entregue com êxito ou o CES seja desabilitado. Se o CES não estiver desabilitado, as entregas com falha impedirão o truncamento do log até que a condição de erro seja resolvida e a mensagem seja entregue com sucesso. Se o CES estiver desabilitado, o truncamento de log será retomado e os eventos que ocorrem durante o tempo de inatividade não serão capturados.

O que acontece se eu fizer uma restauração (ou outro tipo de migração) de um banco de dados que foi configurado para CES?

Após a restauração (ou outros tipos de migração de banco de dados), o CES é desabilitado e parado para o banco de dados. Você precisa reconfigurá-lo para começar a transmitir novamente.

O CES pode fazer um instantâneo inicial ("semente") de dados existentes em tabelas quando o CES está habilitado?

Não. Atualmente, o CES transmite apenas alterações aos dados que ocorrem depois que o CES está habilitado. Ele não transfere dados em uma tabela que existe antes do CES ser habilitado.

Como posso monitorar a atividade do CES (por exemplo, eventos processados, erros)?

Use as seguintes visões do sistema para monitorar a atividade do CES:

No SQL Server 2025, você pode criar uma sessão xEvent relacionada ao CES e obter mais detalhes sobre a atividade do CES e possíveis erros.

  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

Ao configurar o monitoramento do CES xEvent para a Instância Gerenciada de SQL do Azure, armazene o arquivo .xel em um contêiner do Armazenamento de Blobs do Azure. Você pode observar informações de rastreamento de streaming de eventos alteradas no Instância Gerenciada de SQL do Azure 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'
  
);

Não há suporte para a depuração xEvent para solução de problemas do CES no Banco de Dados SQL do Azure.

Você pode monitorar o Hubs de Eventos do Azure ou o Fabric Eventstream e usar métricas e logs associados.

Por quanto tempo os erros CES são mantidos em sys.dm_change_feed_errors?

A lista de erros sys.dm_change_feed_errors é rotacionada automaticamente. Erros mais recentes substituem entradas mais antigas. Erros que param de ocorrer não são removidos da lista imediatamente; elas permanecem até que erros mais recentes as eliminem ou a lista seja completamente limpa.

Há um limite para quantas tabelas podem ser configuradas para streaming?

Sim. A CES suporta até 4.096 grupos de fluxos, com até 40.000 tabelas por grupo.