Povolení a zakázání řešení Change Tracking (SQL Server)
platí pro:SQL Server
Azure SQL Database
azure SQL Managed Instance
Toto téma popisuje, jak povolit a zakázat sledování změn pro databázi a tabulku.
Povolení sledování změn pro databázi
Než budete moct použít sledování změn, musíte povolit sledování změn na úrovni databáze. Následující příklad ukazuje, jak povolit sledování změn pomocí ALTER DATABASE.
ALTER DATABASE AdventureWorks2022
SET CHANGE_TRACKING = ON
(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON)
Sledování změn můžete povolit také v aplikaci SQL Server Management Studio pomocí dialogového okna vlastností databáze (stránka sledování změn). Pokud databáze obsahuje tabulky optimalizované pro paměť, nemůžete povolit sledování změn pomocí aplikace SQL Server Management Studio. K povolení použijte T-SQL.
Když povolíte sledování změn, můžete zadat možnosti CHANGE_RETENTION a AUTO_CLEANUP a hodnoty můžete kdykoli změnit po povolení sledování změn.
Hodnota uchovávání změn určuje časové období, pro které se uchovávají informace o sledování změn. Informace o sledování změn, které jsou starší než toto časové období, se pravidelně odeberou. Při nastavování této hodnoty byste měli zvážit, jak často se aplikace budou synchronizovat s tabulkami v databázi. Zadaná doba uchovávání musí být alespoň tak dlouhá jako maximální doba mezi synchronizacemi. Pokud aplikace získá změny v delších intervalech, vrácené výsledky můžou být nesprávné, protože některé informace o změnách byly pravděpodobně odebrány. Aby se zabránilo získání nesprávných výsledků, může aplikace použít systémovou funkci CHANGE_TRACKING_MIN_VALID_VERSION k určení, jestli byl interval mezi synchronizacemi příliš dlouhý.
Pomocí možnosti AUTO_CLEANUP můžete povolit nebo zakázat úlohu čištění, která odebere staré informace o sledování změn. To může být užitečné, pokud dojde k dočasnému problému, který brání aplikacím v synchronizaci, a proces odebrání informací o sledování změn starších než doba uchovávání se musí pozastavit, dokud se problém nevyřeší.
U každé databáze, která používá sledování změn, mějte na paměti následující skutečnosti:
Pokud chcete použít sledování změn, musí být úroveň kompatibility databáze nastavená na 90 nebo vyšší. Pokud má databáze úroveň kompatibility menší než 90, můžete nakonfigurovat sledování změn. Funkce CHANGETABLE, která se používá k získání informací o sledování změn, však vrátí chybu.
Izolace snímků je nejjednodušší způsob, jak zajistit, aby všechny informace o sledování změn byly konzistentní. Z tohoto důvodu důrazně doporučujeme nastavit izolaci snímků pro databázi na hodnotu ZAPNUTO. Další informace naleznete v tématu Práce se službou Change Tracking (SQL Server).
Povolení sledování změn pro tabulku
Sledování změn musí být povolené pro každou tabulku, kterou chcete sledovat. Pokud je sledování změn povolené, informace o sledování změn se zachovají pro všechny řádky v tabulce, které jsou ovlivněny operací DML.
Následující příklad ukazuje, jak povolit sledování změn pro tabulku pomocí ALTER TABLE.
ALTER TABLE Person.Contact
ENABLE CHANGE_TRACKING
WITH (TRACK_COLUMNS_UPDATED = ON)
Sledování změn pro tabulku v aplikaci SQL Server Management Studio můžete povolit také pomocí dialogového okna Vlastnosti databáze (stránka ChangeTracking).
Pokud je možnost TRACK_COLUMNS_UPDATED nastavená na zapnuto, databázový stroj SQL Serveru ukládá další informace o tom, které sloupce byly aktualizovány na interní tabulku sledování změn. Sledování sloupců umožňuje aplikaci synchronizovat pouze sloupce, které byly aktualizovány. To může zlepšit efektivitu a výkon. Vzhledem k tomu, že údržba informací o sledování sloupců přidává dodatečné režijní náklady na úložiště, je tato možnost ve výchozím nastavení vypnutá.
Zakázání sledování změn pro tabulku nebo databázi
Sledování změn musí být nejprve zakázáno pro všechny tabulky sledované změnami, aby bylo možné pro databázi nastavit sledování změn na hodnotu VYPNUTO. K určení tabulek s povoleným sledováním změn pro databázi použijte zobrazení katalogu sys.change_tracking_tables.
Následující příklad ukazuje, jak zakázat sledování změn pro tabulku pomocí ALTER TABLE.
ALTER TABLE Person.Contact
DISABLE CHANGE_TRACKING;
Pokud žádné tabulky v databázi nesleduje změny, můžete pro databázi zakázat sledování změn. Následující příklad ukazuje, jak zakázat sledování změn pro databázi pomocí ALTER DATABASE.
ALTER DATABASE AdventureWorks2022
SET CHANGE_TRACKING = OFF
Viz také
Vlastnosti databáze (Stránka ChangeTracking)
ALTER DATABASE nastavení možnosti (Transact-SQL)
sys.change_tracking_databases (Transact-SQL)
sys.change_tracking_tables (Transact-SQL)
sledování změn dat (SQL Server)
o řešení Change Tracking (SQL Server)
Práce se změnou dat (SQL Server)
Řízení funkce Change Tracking (SQL Server)