Megosztás:


Tudnivalók a változáskövetésről (SQL Server)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Ez a cikk az SQL Server változáskövetési funkcióját ismerteti, amely egy egyszerű megoldás, amely hatékony változáskövetési mechanizmust biztosít az alkalmazások számára.

Első lépésként tekintse át változáskövetésikonfigurálását.

Áttekintés

Korábban ahhoz, hogy az alkalmazások lekérdezhessék az adatbázis adatainak változásait, és hozzáférhessenek a változásokhoz kapcsolódó információkhoz, az alkalmazásfejlesztőknek egyéni változáskövetési mechanizmusokat kellett implementálniuk. Ezek a mechanizmusok általában sok munkát igényeltek, például triggerek kombinációját, időbélyeget oszlopokat, új táblákat a követési információk tárolásához, valamint egyéni törlési folyamatokat. Az SQL Server változáskövetési funkciója leegyszerűsíti ezt a folyamatot, így egyszerűvé teszi a módosításokkal kapcsolatos információk azonosítását anélkül, hogy egyéni megoldásra lenne szükség.

A különböző típusú alkalmazások különböző követelményekkel rendelkeznek ahhoz, hogy mennyi információra van szükségük a módosításokról. Az alkalmazások a változáskövetés használatával válaszolhatnak a következő kérdésekre a felhasználói táblában végrehajtott módosításokkal kapcsolatban:

  • Mely sorok változtak meg egy felhasználói tábla esetében?

    • Csak azt a tényt kell megadni, hogy egy sor megváltozott, nem pedig az, hogy hányszor változott a sor vagy a köztes változások értéke.

    • A legújabb adatok közvetlenül a nyomon követett táblából kérhetők le.

  • Módosult egy sor?

    • Az a tény, hogy egy sor megváltozott, és a módosítással kapcsolatos információknak rendelkezésre kell állniuk és rögzíteniük kell, amikor a módosítást ugyanabban a tranzakcióban hajtották végre.

Jegyzet

Ha egy alkalmazásnak információra van szüksége az összes módosításról és a módosított adatok köztes értékeiről, akkor a változáskövetés helyett a változásadat-rögzítés használata lehet megfelelő. További információkért lásd: A változásadat-rögzítésről (SQL Server).

SQL Server 2025-módosítások

A változáskövetés egy automatizált törlési folyamat, amely kizárja az elavult változáskövetési metaadatokat a rendszertáblákból. Az SQL Server 2022 (16.x) és korábbi verzióiban az autocleanup folyamat alapos tisztítási módszert alkalmaz.

Ebben a megközelítésben az autotakarító szál 30 percenként felébred, lekéri az összes változáskövetésű adatbázist és táblát, megkeresi a biztonságos törlési pontot a konfigurált megőrzési időszak alapján, majd végigmegy az összes táblán, hogy törölje az adatokat a kapcsolódó származtatott táblákból.

Az SQL Server 2025 (17.x) és újabb verzióiban a változáskövetési autokleanup folyamat új adaptív, sekély tisztítási megközelítést vezet be a nagyméretű oldaltáblákhoz. Ez az új megközelítés eltávolítja az adatokat egy biztonságos tisztítási pont alatt. Ez a pont a konfigurált törlési mélység és megőrzési időszak alapján található. Ez a módszer növekményes lépésekben fut, amíg el nem távolítja az összes jogosult adatot.

Az SQL Server 2025 -ben (17.x) alapértelmezés szerint engedélyezve van az adaptív sekély tisztítás.

Az adaptív sekély tisztítás letiltásához engedélyezze a 8273 nyomkövetési jelzőt globálisan.

DBCC TRACEON (8273, -1);

szinkronizálási alkalmazások One-Way és Two-Way

Azoknak az alkalmazásoknak, amelyeknek adatokat kell szinkronizálnia az SQL Server adatbázismotor egy példányával, le kell tudniuk kérdezni a módosításokat. A változáskövetés az egyirányú és a kétirányú szinkronizálási alkalmazások alapjaként is használható.

szinkronizálási alkalmazások One-Way

Egyirányú szinkronizálási alkalmazások, például egy ügyfél vagy egy közepes szintű gyorsítótárazási alkalmazás hozhatók létre, amelyek változáskövetést használnak. Az alábbi ábrán látható módon a gyorsítótárazási alkalmazásokhoz az adatokat az adatbázismotorban kell tárolni, és más adattárakban kell gyorsítótáraztatni. Az alkalmazásnak képesnek kell lennie a gyorsítótár up-todátumának megőrzésére az adatbázistáblákon végrehajtott módosítások esetén. Nincsenek visszaküldendő változások az Adatbázis-motorhoz.

egyirányú szinkronizálási alkalmazásokat bemutató diagram.

szinkronizálási alkalmazások Two-Way

A változáskövetést használó kétirányú szinkronizálási alkalmazások is létrehozhatók. Ebben a forgatókönyvben az adatbázismotor egy példányában lévő adatok szinkronizálva lesznek egy vagy több adattárral. Az ezekben az tárolókban lévő adatok frissíthetők, és a módosításokat vissza kell szinkronizálni az adatbázismotorba.

kétirányú szinkronizálási alkalmazásokat bemutató diagram.

A kétirányú szinkronizálási alkalmazás jó példája egy alkalmanként csatlakoztatott alkalmazás. Az ilyen típusú alkalmazásokban az ügyfélalkalmazás lekérdezi és frissíti a helyi tárolót. Ha az ügyfél és a kiszolgáló között kapcsolat áll rendelkezésre, az alkalmazás szinkronizálódik egy kiszolgálóval, és mindkét irányban módosítja az adatfolyamokat.

A kétirányú szinkronizálási alkalmazásoknak képesnek kell lenniük az ütközések észlelésére. Ütközés akkor fordulhat elő, ha ugyanazok az adatok változnak mindkét adattárban a szinkronizálások közötti időszakban. Az ütközések észlelésével az alkalmazások gondoskodhatnak arról, hogy a módosítások ne vesszenek el.

A változáskövetés működése

A változáskövetés konfigurálásához használhat DDL-utasításokat vagy SQL Server Management Studiót. További információ: Változáskövetés engedélyezése és letiltása. A változások nyomon követéséhez először engedélyezni kell a változáskövetést az adatbázishoz, majd engedélyezni kell az adatbázisban nyomon követni kívánt táblákat. A tábladefiníciót semmilyen módon nem kell módosítani, és nem jön létre eseményindító.

Miután a változáskövetést konfigurálta egy táblához, a tábla sorait befolyásoló DML-utasítások minden módosított sor változáskövetési információinak rögzítését okozzák. Ha le szeretné kérdezni a módosított sorokat, és információt szeretne kapni a változásokról, használhatja változáskövetési függvényeket.

Az elsődleges kulcs oszlopának értékei az egyetlen olyan információ a követett táblából, amelyet a változásadatokkal együtt rögzítenek. Ezek az értékek azonosítják a módosított sorokat. A sorok legfrissebb adatainak lekéréséhez az alkalmazás az elsődleges kulcs oszlopértékeivel csatlakoztathatja a forrástáblát a nyomon követett táblához.

Az egyes sorokban végrehajtott módosításokkal kapcsolatos információk a változáskövetés használatával is beszerezhetők. Például a módosítást (beszúrást, frissítést vagy törlést) okozó DML-művelet típusát vagy a frissítési művelet részeként módosított oszlopokat.

A rendszer minden DML-műveletet nyomon követ, még akkor is, ha egy oszlop értéke nem változik. Ha például egy frissítési utasítás egy oszlopot ugyanarra az értékre állít be, mint korábban, az oszlop továbbra is módosultnak minősül.

Változáskövetési karbantartás

Az összes tábla változáskövetési információi (a változáskövetéshez engedélyezve) egy memórián belüli sortárban lesznek tárolva. A változáskövetéshez engedélyezett táblákhoz társított változáskövetési adatok minden ellenőrzőpont során a memóriabeli soráruházból a megfelelő lemezre mentett belső táblába kerülnek. Az ellenőrző pont során a memóriában lévő sortár is törlődik, miután a sorok átkerülnek a lemezen tárolt táblákba.

A Változáskövetéshez engedélyezett összes tábla rendelkezik egy belső lemezen található táblával, amelyet a Change Tracking függvények használnak a változásverzió és az adott verzió óta megváltozott sorok meghatározásához. Minden alkalommal, amikor a automatikus törlés szál felébred, megvizsgálja az SQL Server-példány összes felhasználói adatbázisát, hogy azonosítsa a változáskövetést engedélyező adatbázisokat. Az adatbázis megőrzési időszakának beállítása alapján a rendszer minden belső lemezen lévő táblát töröl a lejárt rekordjaiból.

Az SQL Server 2014 (12.x) és az SQL Server 2016 (13.x) szervizcsomagjaiban tárolt eljárás lett hozzáadva a belső Change Tracking belső táblák manuális tisztításához. A tárolt eljárással kapcsolatos további információk a KB173157.