Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Dit artikel behandelt het automatisch opnieuw initialiseren voor het spiegelen van een database voor een SQL Server-exemplaar.
Belangrijk
Deze functie is beschikbaar als preview-versie.
Er zijn bepaalde situaties waarin vertragingen in spiegeling naar Fabric kunnen leiden tot een verhoogd gebruik van transactielogboekbestanden. Dit komt doordat het transactielogboek pas kan worden afgekapt nadat doorgevoerde wijzigingen zijn gerepliceerd naar de gespiegelde database. Zodra de maximale gedefinieerde limiet voor het transactielogboek is bereikt, mislukken schrijfbewerkingen naar de database. Als u operationele databases wilt beschermen tegen schrijffouten voor kritieke OLTP-transacties, kunt u een mechanisme voor automatisch beheer instellen waarmee het transactielogboek kan worden afgekapt en de databasespiegeling opnieuw kan worden geïnitialiseerd naar Fabric.
Een herverdeelde stroom stopt de stroom van transacties naar Microsoft Fabric vanuit de gespiegelde database en initialiseert de spiegeling bij de huidige status opnieuw. Dit omvat het genereren van een nieuwe eerste momentopname van de tabellen die zijn geconfigureerd voor spiegeling en het repliceren ervan naar Microsoft Fabric. Na de momentopname worden incrementele wijzigingen gerepliceerd.
Tijdens het opnieuw verzenden is het gespiegelde database-item in Microsoft Fabric beschikbaar, maar ontvangt het geen incrementele wijzigingen totdat het opnieuw verzenden is voltooid. De reseed_state kolom in sys.sp_help_change_feed_settings geeft de status opnieuw verzonden aan.
De functie voor automatisch beheer is standaard uitgeschakeld in SQL Server 2025 (preview) om automatisch herstellen in te schakelen. De functie voor automatisch beheer is ingeschakeld en kan niet worden beheerd of uitgeschakeld in Azure SQL Database en Azure SQL Managed Instance.
In Fabric Mirroring wordt het transactielogboek van de SQL-database in de bron bewaakt. Een autoreseed wordt alleen geactiveerd wanneer aan de volgende drie voorwaarden wordt voldaan:
- Het transactielogboek is bijvoorbeeld
@autoreseedthresholdmeer dan70het percentage vol. Configureer deze waarde in SQL Server wanneer u de functie inschakelt, met sys.sp_change_feed_configure_parameters. - De reden voor opnieuw gebruiken van logboeken is
REPLICATION. - Omdat het opnieuw gebruiken van logboeken
REPLICATIONkan worden verhoogd voor andere functies, zoals transactionele replicatie of CDC, treedt automatisch alleen op wanneersys.databases.is_data_lake_replication_enabled= 1. Deze waarde wordt geconfigureerd door Fabric Mirroring.
Diagnose
Als u wilt bepalen of fabricspiegeling verhindert dat logboeken worden afgekapt voor een gespiegelde database, controleert u de log_reuse_wait_desc kolom in de sys.databases systeemcatalogusweergave om te zien of de reden is REPLICATION. Zie Factoren voor het afkappen van transactielogboeken voor meer informatie over de wachttypen voor opnieuw gebruiken van logboeken. Voorbeeld:
SELECT [name], log_reuse_wait_desc
FROM sys.databases
WHERE is_data_lake_replication_enabled = 1;
Als in de query het wachttype voor opnieuw gebruiken van logboeken wordt weergegeven REPLICATION , kan het transactielogboek vanwege het spiegelen van het transactielogboek geen vastgelegde transacties leegmaken en blijft deze invullen.
Gebruik het volgende T-SQL-script om de totale logboekruimte en het huidige logboekgebruik en de beschikbare ruimte te controleren:
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];
Automatisch beheren inschakelen
Als het logboekgebruik dat wordt geretourneerd door het vorige T-SQL-script bijna vol is (bijvoorbeeld groter dan 70%), kunt u overwegen om de gespiegelde database in te schakelen voor automatisch opnieuw verzenden met behulp van de door het sys.sp_change_feed_configure_parameters systeem opgeslagen procedure. Als u bijvoorbeeld het automatischreseed gedrag wilt inschakelen:
USE <Mirrored database name>
GO
EXECUTE sys.sp_change_feed_configure_parameters
@autoreseed = 1
, @autoreseedthreshold = 70;
Zie sys.sp_change_feed_configure_parameters voor meer informatie.
In de brondatabase moet de reseed de ruimte voor het transactielogboek vrijgeven die wordt vastgehouden door spiegeling. Geef een handleiding CHECKPOINT uit op de SQL Server-brondatabase om de vrijgave van logboekruimte af te dwingen als de reden van de bewaring nog steeds REPLICATION wordt veroorzaakt door spiegeling. Zie CHECKPOINT (Transact-SQL)voor meer informatie.
Handmatig opnieuw verzenden
Als best practice kunt u handmatig opnieuw verzenden voor een specifieke database testen met behulp van de volgende opgeslagen procedure om inzicht te hebben in de impact voordat u de functionaliteit voor automatisch opnieuw verzenden inschakelt.
USE <Mirrored database name>
GO
EXECUTE sp_change_feed_reseed_db_init @is_init_needed = 1;
Zie sys.sp_change_feed_reseed_db_init voor meer informatie.
Controleren of een opnieuw verzonden bericht is geactiveerd
De
reseed_statekolom in de systeemeigen opgeslagen proceduresys.sp_help_change_feed_settingsvan de bron-SQL-database geeft de huidige reseed-status aan.-
0= Normaal. -
1= De database is begonnen met het opnieuw initialiseren van Fabric. Overgangsstatus. -
2= De database wordt opnieuw geïnitialiseerd naar Fabric en wacht tot de replicatie opnieuw is gestart. Overgangsstatus. Wanneer replicatie tot stand is gebracht, wordt de status opnieuw verzonden naar0.
Zie sys.sp_help_change_feed_settings voor meer informatie.
-
Alle tabellen die zijn ingeschakeld voor spiegeling in de database, hebben een waarde van
7voor destate-kolom insys.sp_help_change_feed_table.Zie sys.sp_help_change_feed_table voor meer informatie.