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.
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 enn70prosent 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
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
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_statei den systemlagrede prosedyrensys.sp_help_change_feed_settingsi 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 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, vil ha verdien
7forstatekolonnen isys.sp_help_change_feed_table.Hvis du vil ha mer informasjon, kan du se sys.sp_help_change_feed_table.