Del via


Konfigurer automatisk reseed for Fabric-spejlede databaser fra SQL Server

Denne artikel omhandler automatisk genudbedring til spejling af en database fra en SQL Server-forekomst.

Der er visse situationer, hvor forsinkelser i spejling til Fabric kan føre til øget brug af transaktionslogfiler. Det skyldes, at transaktionsloggen ikke kan afkortes, før de bekræftede ændringer er blevet replikeret til den spejlede database. Når transaktionslogstørrelsen når sin maksimale definerede grænse, mislykkes skrivninger til databasen. Hvis du vil beskytte driftsdatabaser mod skrivefejl for kritiske OLTP-transaktioner, kan du konfigurere en mekanisme til automatisk udfyldning, der gør det muligt at afkorte transaktionsloggen og initialisere databasespejlingen til Fabric igen.

En genudførsel stopper strømmen af transaktioner til Microsoft Fabric fra den spejlede database og initialiserer spejlingen igen i den aktuelle tilstand. Dette indebærer oprettelse af et nyt indledende øjebliksbillede af de tabeller, der er konfigureret til spejling, og replikering af det til Microsoft Fabric. Efter øjebliksbilledet replikeres trinvise ændringer.

Under reseedning er det spejlede databaseelement i Microsoft Fabric tilgængeligt, men modtager ikke trinvise ændringer, før reseedningen er fuldført. Kolonnen reseed_state i sys.sp_help_change_feed_settings angiver genseedningstilstanden.

Funktionen autoreseed er deaktiveret som standard i SQL Server 2025, for at aktivere kan man se Enable autoreseed. Funktionen til automatisk udfyldning er aktiveret og kan ikke administreres eller deaktiveres i Azure SQL Database og Azure SQL Managed Instance.

I Fabric Mirroring overvåges SQL-databasens transaktionslog. En automatisk genudløsning udløses kun, når følgende tre betingelser er opfyldt:

  • Transaktionsloggen er mere end @autoreseedthreshold procent fuld, for eksempel, 70. På SQL Server skal du konfigurere denne værdi, når du aktiverer funktionen, med sys.sp_change_feed_configure_parameters.
  • Årsagen til genbrug af log er REPLICATION.
  • Da ventetiden på genbrug af REPLICATION log kan udløses for andre funktioner, f.eks. transaktionsreplikering eller CDC, sker automatisk genudsætning kun, når sys.databases.is_data_lake_replication_enabled = 1. Denne værdi konfigureres af Fabric Mirroring.

Diagnosticere

Hvis du vil identificere, om Fabric-spejling forhindrer logtrunkering for en spejlet database, skal du kontrollere log_reuse_wait_desc kolonnen i systemkatalogvisningen sys.databases for at se, om årsagen er REPLICATION. Du kan finde flere oplysninger om ventetyperne for genbrug af logfiler under Faktorer, der forsinker afkortning af transaktionsloggen. Det kan f.eks. være:

SELECT [name], log_reuse_wait_desc 
FROM sys.databases 
WHERE is_data_lake_replication_enabled = 1;

Hvis forespørgslen viser REPLICATION ventetypen for genbrug af log, kan transaktionsloggen ikke tømme bekræftede transaktioner på grund af Fabric-spejling og fortsætter med at udfylde.

Brug følgende T-SQL-script til at kontrollere den samlede logplads og det aktuelle logforbrug og den tilgængelige plads:


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];

Aktiver automatisk genudplantning

Hvis det logforbrug, der returneres af det tidligere T-SQL-script, er tæt på at være fuldt (f.eks. større end 70%), kan du overveje at aktivere den spejlede database til automatisk genudplantning ved hjælp af den systemlagrede sys.sp_change_feed_configure_parameters procedure. Hvis du f.eks. vil aktivere funktionsmåden for automatisk genseedning:

USE <Mirrored database name>
GO
EXECUTE sys.sp_change_feed_configure_parameters 
  @autoreseed = 1
, @autoreseedthreshold = 70; 

Du kan finde flere oplysninger i sys.sp_change_feed_configure_parameters.

I kildedatabasen skal reseedingen frigive transaktionslogpladsen, der holdes oppe ved spejling. Udsted en manual CHECKPOINT til SQL Server-kildedatabasen for at gennemtvinge frigivelse af logplads, hvis årsagen til ventepositionen stadig REPLICATION skyldes spejling. For mere information, se CHECKPOINT (Transact-SQL).

Manuel gensåning

Som en bedste fremgangsmåde kan du teste manuel genræsning for en bestemt database ved hjælp af følgende gemte procedure for at forstå indvirkningen, før du aktiverer den automatiske genræsfunktion.

USE <Mirrored database name>
GO
EXECUTE sp_change_feed_reseed_db_init @is_init_needed = 1;

Du kan finde flere oplysninger i sys.sp_change_feed_reseed_db_init.

Kontroller, om en genseed er blevet udløst

  • Kolonnen reseed_state i den systemlagrede procedure sys.sp_help_change_feed_settings i SQL-kildedatabasen angiver dens aktuelle reseed-tilstand.

    • 0 = Normalt.
    • 1 = Databasen har startet processen med at initialisere til Fabric igen. Overgangstilstand.
    • 2 = Databasen initialiseres igen til Fabric og venter på, at replikeringen genstarter. Overgangstilstand. Når replikeringen er etableret, flyttes genseed-tilstanden til 0.

    Du kan finde flere oplysninger i sys.sp_help_change_feed_settings.

  • Alle tabeller, der er aktiveret til spejling i databasen, har værdien 7 for state kolonnen i sys.sp_help_change_feed_table.

    Du kan finde flere oplysninger i sys.sp_help_change_feed_table.