Aplica-se a: SQL Server 2025 (17.x)
Base de Dados SQL do Azure
Azure SQL Managed Instance
SQL database in Microsoft Fabric
Seguem-se as respostas a perguntas sobre a funcionalidade de streaming de eventos de mudança (CES) para SQL Server 2025 (17.x), Base de Dados SQL do Azure, Azure SQL Managed Instance e base de dados SQL no Microsoft Fabric.
Observação
O streaming de eventos de mudança está atualmente em pré-visualização e apresenta diferenças de suporte entre produtos. Durante a visualização, esse recurso está sujeito a alterações.
Compatibilidade e requisitos
O CES funciona com Base de Dados SQL do Azure?
Sim. O CES é suportado no Base de Dados SQL do Azure a partir de novembro de 2025.
O modelo de recuperação total é necessário para a 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 completa.
Qual é o custo de usar o CES?
Para CES, a utilização dos Hubs de Eventos do Azure e Fabric Eventstream é cobrada a taxas padrão. Taxas de entrada e saída também se aplicam.
Desempenho e impacto
Qual é o impacto esperado no desempenho de um banco de dados grande com milhões de linhas quando o CES está habilitado?
O impacto no desempenho depende da sua carga de trabalho e configuração específicas. No entanto, espera-se que o CES tenha uma sobrecarga menor do que a captura de dados de alteração (CDC), já que não há gravação de dados de volta no banco de dados.
Qual é o tamanho máximo de mensagem suportado pelo CES?
O CES utiliza esta @max_message_size_kb definição para dividir grandes eventos de saída em blocos de mensagens que se ajustam aos limites de destino do Hubs de Eventos do Azure ou ao throughput configurado do Fabric Eventstream. Esta definição controla apenas a divisão de mensagens. Isto não altera o limite de truncamento por coluna: antes do CES formar o evento de saída, cada valor de coluna transmitida maior que 1 MB é truncado para 1 MB.
O registo de transações continuará a crescer se a CES não conseguir entregar eventos (como devido a um problema de destino, credencial de autorização expirada, etc.)?
Sim. O CES assegura uma entrega fiável de mensagens ("pelo menos uma vez"), pelo que o registo de transações não será truncado até que os eventos sejam entregues com sucesso. Se a entrega falhar, o log crescerá até que o problema seja resolvido. É importante manter a saúde do CES monitorizando a entrega de mensagens, erros e a utilização do registo de transações para bases de dados que têm o CES ativado.
Esquema e tratamento de dados
Como o CES lida com alterações de esquema, como a exclusão de 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. A CES não emite eventos para operações DDL em si.
As tabelas com colunas LOB (por exemplo, varchar(max)) são suportadas pelo CES?
Sim. O CES suporta tabelas com colunas LOB. Para cada tabela configurada para streaming, pode controlar se a linha anterior inclui os valores das colunas LOB ao utilizar 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 sejam escritos mais de 65 536 bytes em colunas LOB quando o CES estiver ativado.
O que acontece se o valor de uma coluna transmitida for superior a 1 MB?
Se um ou mais valores de coluna transmitida forem superiores a 1 MB, o CES trunca cada valor de coluna afetado para 1 MB antes de formar o evento de saída. O limite aplica-se a cada coluna separadamente. Por exemplo, se uma linha tiver cinco colunas e os três primeiros valores das colunas forem superiores a 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 bloco para o destino.
A truncagem dos dados da coluna é incondicional. O CES não regista quaisquer erros nem avisos quando esta truncagem ocorre. Configure a opção de configuração do servidor max text repl size para permitir que sejam escritos mais de 65 536 bytes 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 mesa.
Quão granulares são os eventos da CES?
Cada linha afetada por um INSERT, UPDATEou DELETE operação é transmitida como um evento separado.
Se uma transação modifica várias linhas, elas são transmitidas como eventos separados ou como uma só?
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 funciona o CES em uma configuração de alta disponibilidade (HA)? Posso usar uma cadeia de conexão DNN?
O CES só transmite da réplica primária. No caso de um failover, o CES deve ser reconfigurado no novo servidor primário. Pode ligar-se à réplica principal usando qualquer método suportado pelo SQL Server, incluindo um nome de rede distribuída (DNN).
Quais protocolos a CES usa para se comunicar com o destino?
O CES suporta protocolos Kafka e AMQP para Hubs de Eventos do Azure e Fabric Eventstream. HTTPS não é suportado. A partir de 15 de agosto de 2026, o protocolo AMQP está obsoleto para novos grupos de fluxos no Base de Dados SQL do Azure e na base de dados SQL no Microsoft Fabric. Nestas plataformas, todos os grupos de stream recém-criados devem usar AzureEventHubs como .destination_type Este tipo de destino utiliza o protocolo Kafka. Azure SQL Managed Instance e SQL Server 2025 continuam a aceitar AzureEventHubsApacheKafka e AzureEventHubsAMQP até uma atualização futura. Para mais detalhes, veja depreciação do protocolo AMQP. Se usar o protocolo AMQP em grupos de stream existentes, defina a opção de configuração da versão TLS mínima do Hubs de Eventos do Azure para 1.2. O CES não funciona com TLS 1.3 sobre o protocolo AMQP.
A CES pode transmitir diretamente para Kafka?
Não. Atualmente, o CES dá suporte apenas aos Hubs de Eventos do Azure (protocolo AMQP e Kafka) como destino.
A CES pode transmitir para o Fabric Eventstream?
Sim. Pode ligar o CES ao Fabric Eventstream através do endpoint de entrada personalizado compatível com o Hubs de Eventos do Azure disponibilizado pelo eventstream. Configura o CES com a eventstream cadeia de ligação da mesma forma que a configurarias para o Hubs de Eventos do Azure.
O CES suporta a identidade gerida do Microsoft Entra para autenticação com o Hubs de Eventos do Azure e o Fabric Eventstream?
Sim. O CES suporta autenticação Microsoft Entra no Base de Dados SQL do Azure e no Azure SQL Managed Instance. Para o SQL Server 2025, a autenticação Microsoft Entra é suportada a partir do Cumulative Update 3 (CU3) para instâncias ativadas pelo Azure Arc ou a correr numa VM Azure. A autenticação Microsoft Entra não é atualmente suportada na base de dados SQL no Microsoft Fabric.
Funcionalidade e características
O CES pode ser habilitado em um banco de dados que já usa 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 executar-se juntamente com a captura de dados de alteração (CDC)?
Não. CES não pode ser ativado em um banco de dados que tenha o CDC ativado.
O CES pode ser utilizado com bases de dados espelhadas do Fabric para SQL Server?
Não. CES não é suportado com bancos de dados espelhados Fabric para SQL Server.
O que acontece se o CES for desativado? Retoma do ponto onde parou quando é reativado?
Se o CES estiver desativado, não pode ser retomado. Deve reconfigurar manualmente CES para continuar a transmitir eventos em tempo real. As alterações de dados feitas enquanto o CES estava desativado não são registadas. Só as alterações feitas após o reinício do CES são transmitidas em streaming. A CES garante a entrega pelo menos uma vez. Se o CES não entregar uma mensagem, continua a tentar novamente até que a mensagem seja entregue com sucesso ou o CES seja desativado. Se o CES não estiver desativado, as entregas falhadas impedem o truncamento dos logs até que a condição de erro seja resolvida e a mensagem seja entregue com sucesso. Se o CES estiver desativado, a truncação dos logs recomeça e os eventos que ocorrem durante o tempo de inatividade não são capturados.
O que acontece se fizer uma restauração (ou outro tipo de migração) de uma base de dados que foi configurada para CES?
Após a restauração (ou outros tipos de migração da base de dados), o CES é desativado e interrompido para a base de dados. Tens de o reconfigurar para voltar a fazer streaming.
O CES pode fazer uma captura inicial ("semente") dos dados existentes em tabelas quando o CES está activado?
Não. Atualmente, o CES só transmite alterações aos dados que ocorrem depois de o CES estar ativado. Não transmite dados numa tabela que exista antes de o CES estar ativado.
Como posso monitorar a atividade do CES (por exemplo, eventos processados, erros)?
Use as seguintes vistas do sistema para monitorizar a atividade do CES:
- sys.dm_change_feed_errors para erros de entrega de eventos.
- sys.dm_change_feed_log_scan_sessions para a atividade de varredura de log.
No SQL Server 2025, pode criar uma sessão xEvent relacionada com a CES e obter mais detalhes sobre a atividade da 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 a monitorização CES xEvent para Azure SQL Managed Instance, armazene o seu .xel ficheiro num contentor Armazenamento de Blobs do Azure. Pode consultar informações de rastreio do fluxo de eventos de alteração no Azure SQL Managed Instance observando eventos synapse_link_error:
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'
);
A depuração xEvent não é suportada para resolução de problemas CES na Base de Dados SQL do Azure.
Pode monitorizar o Hubs de Eventos do Azure ou o Fabric Eventstream e usar métricas e logs associados.
Durante quanto tempo os erros CES são retidos em sys.dm_change_feed_errors?
A lista de erros de sys.dm_change_feed_errors roda automaticamente. Os erros mais recentes substituem as entradas mais antigas. Erros que deixam de ocorrer não são removidos da lista imediatamente; permanecem até que erros mais recentes os eliminem ou a lista se limpe completamente.
Existe um limite para quantas tabelas podem ser configuradas para streaming?
Sim. O CES suporta até 4.096 grupos de fluxos, com até 40.000 tabelas por grupo.