Automaattisen uudelleenkäsittelyn määrittäminen Fabric-peilatuille tietokannoille SQL Serveristä

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 @autoreseedthreshold prosenttia täynnä, esimerkiksi 70. 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 REPLICATION lokin uudelleenkäytön odotusaika voidaan nostaa muille ominaisuuksille, kuten tapahtumareplikaatiolle tai CDC:lle, automaattinen nollaus tapahtuu vain, kun sys.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_state järjestelmän tallennetun menettelyn sys.sp_help_change_feed_settings sarake 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 muotoon 0.

    Lisätietoja on kohdassa sys.sp_help_change_feed_settings.

  • Kaikilla tietokannassa peilaukseen sallivilla tauluilla on arvo sarakkeelle 7state .sys.sp_help_change_feed_table

    Katso lisätietoja kohdasta sys.sp_help_change_feed_table.