Sdílet prostřednictvím


Povolení a zakázání řešení Change Tracking (SQL Server)

platí pro:SQL ServerAzure SQL Databaseazure 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)