Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Tässä artikkelissa käsitellään automaattista uudelleenkylvöä tietokannan peilaamiseksi SQL Server esiintymästä.
Tietyissä tilanteissa viiveet Microsoft Fabric -peilauksessa voivat johtaa transaktiolokin tiedostojen käytön lisääntymiseen. Tämä kasvu johtuu siitä, että transaktiolokia ei voi katkaista ennen kuin sitoutuneet muutokset on kopioitu peilattu tietokantaan. Kun transaktiolokin koko saavuttaa määritellyn maksimirajansa, tietokantaan kirjoitukset epäonnistuvat. Voit suojata toiminnalliset tietokannat kriittisten OLTP-tapahtumien kirjoitusvirheiltä määrittämällä automaattisesti nollatun mekanismin, joka mahdollistaa tapahtumalokin katkaisemisen ja alustaa tietokannan peilauksen uudelleen Fabriciin.
Uudelleensiemen pysäyttää transaktioiden kulun Fabric:iin peilatusta tietokannasta ja käynnistää peilauksen uudelleen nykyisessä tilassa. Tämä prosessi sisältää uuden alkuperäisen snapshotin luomisen tauluista, jotka on konfiguroitu peilausta varten, ja sen kopioiminen Fabric-ohjelmaan. Tilannevedoksen jälkeen inkrementaaliset muutokset toistetaan.
Uudelleensiemennyksen aikana Fabric-tiedoston peilattu tietokantakohde on käytettävissä, mutta siihen ei tule asteittaisia muutoksia ennen kuin uudelleensiemen on valmis. Sarake reseed_state in sys.sp_help_change_feed_settings ilmaisee uudelleenkäynnistetyn tilan.
Automaattinen uudelleenistutusominaisuus on oletuksena poistettu käytöstä SQL Server 2025:ssä. Ottaaksesi sen käyttöön, katso Ota autoreseed käyttöön. Azure SQL Database- ja Azure SQL Managed Instance-toiminnoissa tämä ominaisuus on käytössä, eikä sitä voi hallita tai poistaa käytöstä.
Fabric Mirroringissa SQL-lähdetietokannan tapahtumalokia valvotaan. Autoresseed aktivoituu vain, kun seuraavat kolme ehtoa pitävät paikkansa:
- Tapahtumaloki on yli
@autoreseedthresholdprosenttia täynnä, esimerkiksi70. SQL Server määritä tämä arvo, kun otat ominaisuuden käyttöön, käyttämällä sys.sp_change_feed_configure_parameters. - Lokin uudelleenkäytön syy on
REPLICATION. - Koska
REPLICATIONlokin uudelleenkäytön odotusaika voidaan nostaa muille ominaisuuksille, kuten tapahtumareplikaatiolle tai CDC:lle, automaattinen nollaus tapahtuu vain, kunsys.databases.is_data_lake_replication_enabled= 1. Tämä arvo määritetään Fabric Mirroring -toiminnolla.
Diagnosoida
Jotta voidaan selvittää, estääkö Fabric-peilaus peilatun tietokannan lokikatkaisua, tarkista järjestelmän kataloginäkymän log_reuse_wait_desc sarakkeestasys.databases, onko syy REPLICATION. Lisätietoja lokin uudelleenkäytön odotustyypeistä on kohdassa Tapahtumalokin katkaisua viivästyttävät tekijät. Esimerkki:
SELECT [name], log_reuse_wait_desc
FROM sys.databases
WHERE is_data_lake_replication_enabled = 1;
Jos kysely näyttää REPLICATION lokin uudelleenkäytön odotustyypin, niin Fabric peilaa transaktiolokia ei voi tyhjentää sitoutuneita transaktioita ja jatkaa täyttämistä.
Seuraavan T-SQL-komentosarjan avulla voit tarkistaa lokitilan kokonaismäärän sekä nykyisen lokin käytön ja käytettävissä olevan tilan:
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];
Ota automaattinen nollaus käyttöön
Jos edellisen T-SQL-skriptin palauttama lokikäyttö on lähellä täyttä (esimerkiksi yli 70%), harkitse peilillisen tietokannan käyttöönottoa automaattiseen uudelleensiementykseen käyttämällä järjestelmän sys.sp_change_feed_configure_parameters tallennettua menettelyä. Voit esimerkiksi ottaa automaattisen nollatun toiminnan käyttöön:
USE <Mirrored database name>
GO
EXECUTE sys.sp_change_feed_configure_parameters
@autoreseed = 1
, @autoreseedthreshold = 70;
Lisätietoja on kohdassa sys.sp_change_feed_configure_parameters.
Lähdetietokannassa uudelleenistutusprosessin tulisi vapauttaa peilauksella pidätetty transaktiolokin tila. Jos viivästyksen syy on edelleen REPLICATION peilaus, julkaise CHECKPOINT ohjekirja lähdekoodin SQL Server -tietokannasta, joka pakottaa lokitilan vapautuksen. Katso lisätietoja kohdasta CHECKPOINT (Transact-SQL).
Manuaalinen uudelleenkäsittely
Suosittelemme, että testaat manuaalisen uudelleensiementyksen tietylle tietokannalle seuraavalla tallennetulla menettelyllä, jotta ymmärrät vaikutuksen ennen automaattisen uudelleensiementämisen käyttöönottoa.
USE <Mirrored database name>
GO
EXECUTE sp_change_feed_reseed_db_init @is_init_needed = 1;
Katso lisätietoja kohdasta sys.sp_change_feed_reseed_db_init.
Tarkista, onko uudelleenkäynnistys
SQL-lähdetietokannan
reseed_statejärjestelmän tallennetun menettelynsys.sp_help_change_feed_settingssarake näyttää nykyisen uudelleensiementämistilan.-
0= Normaali. -
1= Tietokanta on aloittanut uudelleenalustuksen Fabriciin. Siirtymävaiheen tila.-
2= Tietokanta alustaa uudelleen Fabric-versiolle ja odottaa replikaation uudelleenkäynnistymistä. Siirtymävaiheen tila. Kun replikaatio on saavutettu, uudelleensiemennestetila muuttuu muotoon0.
-
Lisätietoja on kohdassa sys.sp_help_change_feed_settings.
-
Kaikilla tietokannassa peilaukseen sallivilla tauluilla on arvo sarakkeelle
7state.sys.sp_help_change_feed_tableKatso lisätietoja kohdasta sys.sp_help_change_feed_table.