Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Denne artikkelen dekker automatisk ny seeding for speiling av en database fra en SQL Server-forekomst.
I visse situasjoner kan forsinkelser i speiling til Microsoft Fabric føre til økt bruk av transaksjonsloggfiler. Denne økningen skjer fordi transaksjonsloggen ikke kan avkortes før etter at forpliktede endringer er replikert til den speilede databasen. Når transaksjonsloggens størrelse når sin maksimale definerte grense, feiler skrivingene 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 resed stopper flyten av transaksjoner til Fabric fra den speilede databasen og reinitialiserer speilingen i nåværende tilstand. Denne prosessen innebærer å generere et nytt innledende snapshot av tabellene konfigurert for speiling, og replikere dette snapshotet til Fabric. Etter øyeblikksbildet replikeres trinnvise endringer.
Under reseed er det speilede databaseelementet i Fabric tilgjengelig, men får ikke inkrementelle endringer før seedingen 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 det, se Aktiver autoreseed. I Azure SQL Database og Azure SQL Managed Instance er denne funksjonen aktivert, og du kan verken administrere eller deaktivere den.
I Fabric Mirroring overvåkes transaksjonsloggen for SQL-databasen. Et autorefrø utløses bare når følgende tre betingelser er oppfylt:
- Transaksjonsloggen er for eksempel
@autoreseedthresholdmer enn70prosent full, . På SQL Server, konfigurer denne verdien når du aktiverer funksjonen, ved å bruke sys.sp_change_feed_configure_parameters. - Årsaken til gjenbruk av loggen er
REPLICATION. - Fordi ventetiden for gjenbruk av
REPLICATIONlogg kan utløses for andre funksjoner, for eksempel transaksjonsreplikering eller CDC, skjer automatisk gjenbruk bare nårsys.databases.is_data_lake_replication_enabled= 1. Denne verdien konfigureres av Fabric Mirroring.
Diagnostisere
For å identifisere om Fabric-speiling forhindrer log-trunkering for en speilet database, sjekk kolonnen log_reuse_wait_desc i systemkatalogvisningen sys.databases for å avgjøre 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 log-gjenbruk ventetype, kan transaksjonsloggen på grunn av Fabric-speiling ikke tømme forpliktede transaksjoner og fortsetter å fylles.
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 returneres av forrige T-SQL-skript er nær ved å være full (for eksempel mer enn 70%), vurder å aktivere den speilede databasen for automatisk nyseeding ved å bruke systemlagret sys.sp_change_feed_configure_parameters prosedyre. 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 reseed-prosessen frigjøre transaksjonsloggplassen som speiling. Hvis forsinkelsen fortsatt REPLICATION skyldes speiling, legg ut en manual CHECKPOINT på kilde-SQL Server-databasen for å tvinge frigivelse av loggplass. For mer informasjon, se SJEKKPUNKT (Transact-SQL).
Manuell gjensåing
Vi anbefaler at du tester manuell såing for en spesifikk database ved å bruke følgende lagrede prosedyre, slik at du forstår effekten før du slår på automatisk ny såing.
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_statei systemlagret prosedyresys.sp_help_change_feed_settingspå kilde-SQL-databasen viser den nåværende gjenopprettede tilstanden.-
0= Normalt. -
1= Databasen har startet prosessen med å initialisere på nytt til Fabric. Overgangstilstand.-
2= Databasen reinitialiserer til Fabric og venter på at replikasjonen skal starte på nytt. Overgangstilstand. Når replikasjon er etablert, endres reed-tilstanden til0.
-
Hvis du vil ha mer informasjon, kan du se sys.sp_help_change_feed_settings.
-
Alle tabeller som er aktivert for speiling i databasen har en verdi på
7for kolonnenstateisys.sp_help_change_feed_table.Hvis du vil ha mer informasjon, kan du se sys.sp_help_change_feed_table.