Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo aborda o reseeding automático para espelhar um banco de dados de uma instância do SQL Server.
Há certas situações em que atrasos no espelhamento para o Fabric podem levar a um aumento do uso do arquivo de log de transações. Isso ocorre porque o log de transações não pode ser truncado até que as alterações confirmadas tenham sido replicadas no banco de dados espelhado. Depois que o tamanho do log de transações atingir seu limite máximo definido, as gravações no banco de dados falharão. Para proteger os bancos de dados operacionais contra falhas de gravação para transações OLTP críticas, você pode configurar um mecanismo de autoreseed que permite que o log de transações seja truncado e reinicializa o espelhamento de banco de dados para o Fabric.
Uma resseada interrompe o fluxo de transações para o Microsoft Fabric do banco de dados espelhado e reinicializa o espelhamento no estado atual. Isso envolve gerar um novo instantâneo inicial das tabelas configuradas para espelhamento e replicá-lo no Microsoft Fabric. Após o instantâneo, as alterações incrementais são replicadas.
Durante a resseada, o item de banco de dados espelhado no Microsoft Fabric está disponível, mas não receberá alterações incrementais até que a resseada seja concluída. A reseed_state coluna em sys.sp_help_change_feed_settings indica o estado de novamente.
O recurso de autoreseed é desabilitado por padrão no SQL Server 2025, para habilitar, veja Habilitar autoreseed. O recurso de autoreseed está habilitado e não pode ser gerenciado ou desabilitado no Banco de Dados SQL do Azure e na Instância Gerenciada de SQL do Azure.
No Espelhamento do Fabric, o log de transações do banco de dados SQL de origem é monitorado. Um autoreseed só será disparado quando as três condições a seguir forem verdadeiras:
- O log de transações está mais de
@autoreseedthresholdporcentagem cheio, por exemplo,70. No SQL Server, configure esse valor ao habilitar o recurso, com sys.sp_change_feed_configure_parameters. - O motivo da reutilização do log é
REPLICATION. - Como a espera de reutilização de
REPLICATIONlog pode ser gerada para outros recursos, como replicação transacional ou CDC, o autoreseed só ocorre quandosys.databases.is_data_lake_replication_enabled= 1. Esse valor é configurado pelo Espelhamento de Malha.
Diagnose
Para identificar se o espelhamento do Fabric está impedindo o truncamento de log para um banco de dados espelhado, verifique a log_reuse_wait_desc coluna no modo de exibição do catálogo do sys.databases sistema para ver se o motivo é REPLICATION. Para obter mais informações sobre os tipos de espera de reutilização de log, consulte Fatores que atrasam o truncamento do log de transações. Por exemplo:
SELECT [name], log_reuse_wait_desc
FROM sys.databases
WHERE is_data_lake_replication_enabled = 1;
Se a consulta mostrar REPLICATION o tipo de espera de reutilização de log, devido ao espelhamento do Fabric, o log de transações não poderá esvaziar transações confirmadas e continuará a ser preenchido.
Use o script T-SQL a seguir para verificar o espaço total do log, o uso do log atual e o espaço disponível:
USE <Mirrored database name>
GO
--initialize variables
DECLARE @total_log_size bigint = 0;
DECLARE @used_log_size bigint = 0;
DECLARE @size int;
DECLARE @max_size int;
DECLARE @growth int;
--retrieve total log space based on number of log files and growth settings for the database
DECLARE sdf CURSOR
FOR
SELECT SIZE*1.0*8192/1024/1024 AS [size in MB],
max_size*1.0*8192/1024/1024 AS [max size in MB],
growth
FROM sys.database_files
WHERE TYPE = 1
OPEN sdf
FETCH NEXT FROM sdf INTO @size,
@max_size,
@growth
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @total_log_size = @total_log_size +
CASE @growth
WHEN 0 THEN @size
ELSE @max_size
END
FETCH NEXT FROM sdf INTO @size,
@max_size,
@growth
END
CLOSE sdf;
DEALLOCATE sdf;
--current log space usage
SELECT @used_log_size = used_log_space_in_bytes*1.0/1024/1024
FROM sys.dm_db_log_space_usage;
-- log space used in percent
SELECT @used_log_size AS [used log space in MB],
@total_log_size AS [total log space in MB],
@used_log_size/@total_log_size AS [used log space in percentage];
Habilitar autoreseed
Se o uso de log retornado pelo script T-SQL anterior estiver perto de estar cheio (por exemplo, mais de 70%), considere habilitar o banco de dados espelhado para reutilização automática usando o procedimento armazenado do sys.sp_change_feed_configure_parameters sistema. Por exemplo, para habilitar o comportamento de autoreseed:
USE <Mirrored database name>
GO
EXECUTE sys.sp_change_feed_configure_parameters
@autoreseed = 1
, @autoreseedthreshold = 70;
Para obter mais informações, consulte sys.sp_change_feed_configure_parameters.
No banco de dados de origem, a resseada deve liberar o espaço de log de transações mantido por espelhamento. Emita um manual CHECKPOINT no banco de dados do SQL Server de origem para forçar a liberação do espaço de log se o motivo da espera ainda REPLICATION for devido ao espelhamento. Para obter mais informações, consulte CHECKPOINT (Transact-SQL).
Reutilizado manualmente
Como prática recomendada, você pode testar o reseed manual para um banco de dados específico usando o procedimento armazenado a seguir para entender o impacto antes de ativar a funcionalidade reativada automática.
USE <Mirrored database name>
GO
EXECUTE sp_change_feed_reseed_db_init @is_init_needed = 1;
Para obter mais informações, consulte sys.sp_change_feed_reseed_db_init.
Verificar se uma resseada foi disparada
A coluna
reseed_stateno procedimento armazenado de sistemasys.sp_help_change_feed_settingsno banco de dados SQL de origem indica seu estado de reseed atual.-
0= Normal. -
1= O banco de dados iniciou o processo de reinicialização para o Fabric. Estado transitório. -
2= O banco de dados está sendo reinicializado no Fabric e aguardando a reinicialização da replicação. Estado transitório. Quando a replicação é estabelecida, o estado de novamente é movido para0.
Para obter mais informações, consulte sys.sp_help_change_feed_settings.
-
Todas as tabelas habilitadas para espelhamento no banco de dados terão um valor de
7na colunastateemsys.sp_help_change_feed_table.Para obter mais informações, consulte sys.sp_help_change_feed_table.