Del via


Konfigurer automatisk reseed for Fabric speilede databaser fra SQL Server

Denne artikkelen dekker automatisk ny seeding for speiling av en database fra en SQL Server-forekomst.

Det er visse situasjoner der forsinkelser i speiling til Fabric kan føre til økt bruk av transaksjonsloggfiler. Dette er fordi transaksjonsloggen ikke kan avkortes før etter at bekreftede endringer er replikert til den speilede databasen. Når transaksjonsloggstørrelsen når sin maksimale definerte grense, mislykkes skriving til databasen. Hvis du vil beskytte driftsdatabaser mot skrivefeil for kritiske OLTP-transaksjoner, kan du konfigurere en mekanisme for automatisk utfylling som gjør det mulig å avkorte transaksjonsloggen og initialiserer databasespeilingen til Fabric på nytt.

En ny seeding stopper flyten av transaksjoner til Microsoft Fabric fra den speilede databasen og initialiserer speilingen på nytt i gjeldende tilstand. Dette innebærer å generere et nytt innledende øyeblikksbilde av tabellene som er konfigurert for speiling, og replikere det til Microsoft Fabric. Etter øyeblikksbildet replikeres trinnvise endringer.

Under reseeding er det speilede databaseelementet i Microsoft Fabric tilgjengelig, men vil ikke motta trinnvise endringer før reseedingen er fullført. Kolonnen reseed_state i sys.sp_help_change_feed_settings angir tilstanden for ny seeding.

Autoeseed-funksjonen er deaktivert som standard i SQL Server 2025, for å aktivere se, se Aktiver autoreseed. Funksjonen for automatisk reseed er aktivert og kan ikke administreres eller deaktiveres i Azure SQL Database og Azure SQL Managed Instance.

I Fabric Mirroring overvåkes transaksjonsloggen for SQL-databasen. En automatisk reseed vil bare utløses når følgende tre betingelser er oppfylt:

  • Transaksjonsloggen er for eksempel @autoreseedthresholdmer enn 70 prosent full, . På SQL Server konfigurerer du denne verdien når du aktiverer funksjonen, med sys.sp_change_feed_configure_parameters.
  • Årsaken til gjenbruk av loggen er REPLICATION.
  • Fordi ventetiden for gjenbruk av REPLICATION logg kan utløses for andre funksjoner, for eksempel transaksjonsreplikering eller CDC, skjer automatisk gjenbruk bare når sys.databases.is_data_lake_replication_enabled = 1. Denne verdien konfigureres av Fabric Mirroring.

Diagnostisere

Hvis du vil identifisere om Fabric Mirroring hindrer loggavkorting for en speilet database, kontrollerer log_reuse_wait_desc du kolonnen i sys.databases systemkatalogvisningen for å se om årsaken er REPLICATION. Hvis du vil ha mer informasjon om ventetypene for gjenbruk av logg, kan du se Faktorer som forsinker avkorting av transaksjonslogg. Eksempel:

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

Hvis spørringen viser REPLICATION ventetype for gjenbruk av logg, kan ikke transaksjonsloggen tømme ut forpliktede transaksjoner på grunn av Fabric-speiling, og den vil fortsette å fylles ut.

Bruk følgende T-SQL-skript til å kontrollere total loggplass, gjeldende loggbruk og tilgjengelig plass:


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 reseed

Hvis loggbruken som ble returnert av det forrige T-SQL-skriptet, er nær ved å være full (for eksempel større enn 70%), bør du vurdere å aktivere den speilede databasen for automatisk reseeding ved hjelp av den systemlagrede prosedyren sys.sp_change_feed_configure_parameters . Hvis du for eksempel vil aktivere virkemåten for automatisk reseeding:

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

Hvis du vil ha mer informasjon, kan du se sys.sp_change_feed_configure_parameters.

I kildedatabasen skal reseedingen frigjøre transaksjonsloggplassen som holdes oppe av speiling. Utsted en håndbok CHECKPOINT for SQL Server-kildedatabasen for å fremtvinge frigjøring av loggplass hvis årsaken til sperringen fortsatt REPLICATION skyldes speiling. For mer informasjon, se SJEKKPUNKT (Transact-SQL).

Manuell gjensåing

Som en anbefalt fremgangsmåte kan du teste manuell ny seed for en bestemt database ved hjelp av følgende lagrede prosedyre for å forstå virkningen før du aktiverer den automatiske funksjonen for ny seeding.

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

Hvis du vil ha mer informasjon, kan du se sys.sp_change_feed_reseed_db_init.

Sjekk om en reseed er utløst

  • Kolonnen reseed_state i den systemlagrede prosedyren sys.sp_help_change_feed_settings i SQL-kildedatabasen angir gjeldende status for reseeding.

    • 0 = Normalt.
    • 1 = Databasen har startet prosessen med å initialisere på nytt til Fabric. Overgangstilstand.
    • 2 = Databasen initialiseres på nytt til Fabric og venter på at replikeringen skal starte på nytt. Overgangstilstand. Når replikering er etablert, flyttes reseed-tilstanden til 0.

    Hvis du vil ha mer informasjon, kan du se sys.sp_help_change_feed_settings.

  • Alle tabeller som er aktivert for speiling i databasen, vil ha verdien 7 for state kolonnen i sys.sp_help_change_feed_table.

    Hvis du vil ha mer informasjon, kan du se sys.sp_help_change_feed_table.