Jaa


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 peilauksessa Fabriciin voivat lisätä tapahtumalokitiedoston käyttöä. Tämä johtuu siitä, että tapahtumalokia ei voi katkaista ennen kuin vahvistetut muutokset on replikoitu peilattuun tietokantaan. Kun tapahtumalokin koko saavuttaa määritetyn enimmäisrajan, tietokantaan kirjoittaminen epäonnistuu. 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.

Uudelleenohjaus pysäyttää tapahtumien työnkulun Microsoft Fabriciin peilatusta tietokannasta ja alustaa peilauksen uudelleen nykyisessä tilassa. Tämä edellyttää uuden ensimmäisen tilannevedoksen luomista peilausta varten määritetyistä taulukoista ja sen replikointia Microsoft Fabriciin. Tilannevedoksen jälkeen inkrementaaliset muutokset toistetaan.

Uudelleensiementyksen aikana peilattu tietokantakohde Microsoft Fabricissa on käytettävissä, mutta se ei saa lisämuutoksia, ennen kuin uudelleenkäsittely on valmis. Sarake reseed_state in sys.sp_help_change_feed_settings ilmaisee uudelleenkäynnistetyn tilan.

Autoresseed-ominaisuus on oletuksena pois käytöstä SQL Server 2025:ssä, jotta voit ottaa käyttöön katso Ota autoreseed käyttöön. Automaattinen nollausominaisuus on käytössä, eikä sitä voi hallita tai poistaa käytöstä Azure SQL Databasessa ja Azure SQL Managed Instancessa.

Fabric Mirroringissa SQL-lähdetietokannan tapahtumalokia valvotaan. Automaattinen nollaus käynnistyy vain, kun seuraavat kolme ehtoa täyttyvät:

  • Tapahtumaloki on yli @autoreseedthreshold prosenttia täynnä, esimerkiksi 70. Määritä tämä arvo SQL Serverissä, kun otat ominaisuuden käyttöön 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

Jos haluat selvittää, estääkö Fabric-peilaus peilatun tietokannan lokin katkaisun, tarkista log_reuse_wait_desc järjestelmäluettelonäkymän sarakkeesta sys.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 kyselyssä näkyy REPLICATION lokin uudelleenkäytön odotustyyppi, Fabricin peilauksen vuoksi tapahtumaloki ei voi tyhjentää vahvistettuja tapahtumia 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-komentosarjan palauttama lokin käyttö on lähes täynnä (esimerkiksi yli 70%), harkitse peilatun tietokannan automaattisen uudelleensiemennyksen käyttöönottoa järjestelmän tallennetun toimintosarjan avulla sys.sp_change_feed_configure_parameters . 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 uudelleenkirjoituksen pitäisi vapauttaa peilauksen yllä oleva tapahtumalokitila. Anna lähde SQL Server -tietokannasta käsikirja CHECKPOINT lokitilan vapauttamisen pakottamiseksi, jos viivytyksen syy johtuu edelleen REPLICATION peilauksesta. Katso lisätietoja kohdasta CHECKPOINT (Transact-SQL).

Manuaalinen uudelleenkäsittely

Parhaana käytäntönä voit testata manuaalista uudelleenvalintaa tietylle tietokannalle käyttämällä seuraavaa tallennettua menettelyä, jotta ymmärrät vaikutuksen ennen automaattisen uudelleenvalintatoiminnon ottamista käyttöön.

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 toimintosarjan sys.sp_help_change_feed_settings sarake ilmaisee sen nykyisen uudelleenkorjatun tilan.

    • 0 = Normaali.
    • 1 = Tietokanta on aloittanut uudelleenalustuksen Fabriciin. Siirtymävaiheen tila.
    • 2 = Tietokanta alustetaan uudelleen Fabriciin ja odottaa replikoinnin uudelleenkäynnistystä. Siirtymävaiheen tila. Kun replikointi on muodostettu, uudelleenkäynnistetty tila siirtyy .0

    Lisätietoja on kohdassa sys.sp_help_change_feed_settings.

  • Kaikkien taulukoiden, jotka on otettu käyttöön peilattavaksi tietokannassa, sarakkeen arvo 7state on .sys.sp_help_change_feed_table

    Katso lisätietoja kohdasta sys.sp_help_change_feed_table.