Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
Ez a cikk a változáskövetés kezelését ismerteti. Azt is ismerteti, hogyan konfigurálhatja a biztonságot, és hogyan határozhatja meg a tárolásra és a teljesítményre gyakorolt hatásokat a változáskövetés használatakor.
Változáskövetés kezelése
Az alábbi szakaszok a változáskövetés kezeléséhez szükséges katalógusnézeteket, engedélyeket és beállításokat sorolják fel.
Katalógusnézetek
Annak megállapításához, hogy mely táblák és adatbázisok rendelkeznek engedélyezve a változáskövetéssel, a következő katalógusnézeteket használhatja:
Emellett a sys.internal_tables katalógusnézet felsorolja azokat a belső táblákat is, amelyek akkor jönnek létre, amikor a változáskövetés engedélyezve van egy felhasználói tábla esetében.
Biztonság
Ha a változáskövetési függvények használatával szeretné elérni a változáskövetési információkat, az egyszerű felhasználónak a következő engedélyekkel kell rendelkeznie:
SELECTlegalább a változáskövetésű tábla elsődleges kulcsoszlopainak engedélyét a lekérdezett táblára.VIEW CHANGE TRACKINGengedély azon a táblán, amelyhez módosításokat szerez be. AzVIEW CHANGE TRACKINGengedélyre a következő okok miatt van szükség:A változáskövetési rekordok tartalmazzák a törölt sorok adatait. A rekordok a törölt sorok elsődleges kulcsértékeit használják. A rendszerbiztonsági tag engedélyt kaphatott
SELECTvolna egy változáskövetéses táblára néhány bizalmas adat törlése után. Ebben az esetben nem szeretné, hogy a rendszerbiztonsági tag a változáskövetés használatával hozzáférhessen a törölt információkhoz.A változáskövetési információk információkat tárolhatnak arról, hogy mely oszlopokat módosították a frissítési műveletek. A rendszerbiztonsági tag engedélyét megtagadhatja egy bizalmas információkat tartalmazó oszlophoz. Mivel azonban elérhetőek a változáskövetési információk, a rendszerbiztonsági tagok megállapíthatják, hogy egy oszlop értéke frissült-e, de az egyszerű nem tudja meghatározni az oszlop értékét.
A változáskövetési többletterhelés ismertetése
Ha a változáskövetés engedélyezve van egy táblában, bizonyos adminisztrációs műveletekre hatással van. Az alábbi táblázat felsorolja azokat a műveleteket és hatásokat, amelyeket érdemes figyelembe vennie.
| Operation | Ha engedélyezve van a változáskövetés |
|---|---|
DROP TABLE |
Az elvetett tábla összes változáskövetési információja el lesz távolítva. |
ALTER TABLE DROP CONSTRAINT |
A kényszer elvetésére PRIMARY KEY tett kísérlet meghiúsul. A változáskövetést le kell tiltani a PRIMARY KEY kényszer elvetéséig. |
ALTER TABLE DROP COLUMN |
Ha egy elvetett oszlop az elsődleges kulcs része, az oszlop elvetése a változáskövetéstől függetlenül nem engedélyezett. Ha az elvetett oszlop nem része az elsődleges kulcsnak, az oszlop elvetése sikeres lesz. Az adatokat szinkronizáló alkalmazásokra gyakorolt hatást azonban először meg kell érteni. Ha az oszlopváltozások nyomon követése engedélyezve van a táblában, előfordulhat, hogy az elvetett oszlop továbbra is a változáskövetési információk részeként lesz visszaadva. Az elvetett oszlop kezelése az alkalmazás feladata. |
ALTER TABLE ADD COLUMN |
Ha új oszlopot ad hozzá a változáskövetéses táblához, az oszlop hozzáadása nem lesz nyomon követve. A rendszer csak az új oszlopban végrehajtott frissítéseket és módosításokat követi nyomon. |
ALTER TABLE ALTER COLUMN |
A nem elsődleges kulcsoszlop adattípus-változásait a rendszer nem követi nyomon. |
ALTER TABLE SWITCH |
A partícióváltás sikertelen, ha egy vagy mindkét táblában engedélyezve van a változáskövetés. |
DROP INDEX, or ALTER INDEX DISABLE |
Az elsődleges kulcsot kényszerítő indexet nem lehet elvetni vagy letiltani. |
TRUNCATE TABLE |
A táblák csonkolása olyan táblákon végezhető el, amelyeken engedélyezve van a változáskövetés. A művelet által törölt sorok azonban nem lesznek nyomon követve, és a minimális érvényes verzió is frissül. Amikor egy alkalmazás ellenőrzi a verzióját, az ellenőrzés azt jelzi, hogy a verzió túl régi, és újraincializálásra van szükség. Ez ugyanaz, mint amikor a változáskövetés le van tiltva, majd újra felhasználható a táblához. |
A változáskövetés használata némi többletterhelést jelent a DML-műveletekhez a művelet részeként tárolt változáskövetési információk miatt.
A DML-re gyakorolt hatások
A változáskövetés a DML-műveletek teljesítményterhelésének minimalizálása érdekében lett optimalizálva. A változáskövetés táblán való használatával járó növekményes teljesítményterhelés hasonló ahhoz a többletterheléshez, amely akkor merült fel, amikor egy tábla indexet hoz létre, és azt fenn kell tartani.
A DML-művelet által módosított minden sorhoz hozzáad egy sort a belső változáskövetési táblához. Ennek a DML-művelethez viszonyított hatása különböző tényezőktől függ, például:
Az elsődleges kulcsoszlopok száma
A felhasználói tábla sorában módosítandó adatok mennyisége
A tranzakcióban végrehajtott műveletek száma
A pillanatképek elkülönítése, ha használatos, az összes DML-művelet teljesítményére is hatással van, függetlenül attól, hogy a változáskövetés engedélyezve van-e.
A tárolásra gyakorolt hatások
A változáskövetési adatokat a rendszer a következő típusú belső táblákban tárolja:
Belső változástábla
Minden olyan felhasználói tábla esetében van egy belső változástábla, amelyben engedélyezve van a változáskövetés.
Belső tranzakciós tábla
Az adatbázishoz egy belső tranzakciós tábla tartozik.
Ezek a belső táblák a következő módokon befolyásolják a tárolási követelményeket:
A felhasználói tábla minden egyes sorának módosításakor a rendszer hozzáad egy sort a belső változástáblához. Ez a sor egy kis rögzített többletterheléssel és egy változó többletterheléssel rendelkezik, amely megegyezik az elsődleges kulcsoszlopok méretével. A sor tartalmazhat egy alkalmazás által beállított opcionális környezeti információkat. Ha az oszlopkövetés engedélyezve van, minden módosított oszlophoz 4 bájt szükséges a követési táblában.
Minden véglegesített tranzakcióhoz egy sor lesz hozzáadva egy belső tranzakciós táblához.
A többi belső táblához hasonlóan a sp_spaceused tárolt eljárással is meghatározhatja a változáskövetési táblákhoz használt helyet. A belső táblák neve a sys.internal_tables katalógusnézet használatával kérhető le, ahogyan az alábbi példában is látható.
sp_spaceused 'sys.change_tracking_309576141'
sp_spaceused 'sys.syscommittab'
Kapcsolódó tartalom
- Adatváltozások nyomon követése (SQL Server)
- ALTER TABLE (Transact-SQL)
- Adatbázis tulajdonságai (ChangeTracking Page)
- ALTER DATABASE SET beállításai (Transact-SQL)
- sys.change_tracking_databases (Transact-SQL)
- sys.change_tracking_tables (Transact-SQL) (Rendszer-változáskövető táblák)
- A változáskövetés (SQL Server)
- Adatok módosítása