Číst v angličtině

Sdílet prostřednictvím


Informace o řešení Change Tracking (SQL Server)

platí pro:SQL ServerAzure SQL Databaseazure SQL Managed Instance

Tento článek popisuje funkci sledování změn pro SQL Server, což je jednoduché řešení, které poskytuje efektivní mechanismus sledování změn pro aplikace.

Začněte tím, že prozkoumáte Nastavit sledování změn.

Přehled

Dříve museli vývojáři aplikací implementovat vlastní mechanismy sledování změn v databázi a k informacím týkajícím se těchto změn přistupovat, aby aplikace mohly dotazovat na změny v datech. Tyto mechanismy obvykle zahrnovaly spoustu práce, jako je kombinace trigerů, časových razítek sloupců, nových tabulek pro ukládání informací o sledování a vlastních procesů údržby. Funkce sledování změn SQL Serveru tento proces zjednodušuje a usnadňuje identifikaci informací souvisejících se změnami bez nutnosti vlastního řešení.

Různé typy aplikací mají různé požadavky na to, kolik informací o změnách potřebují. Aplikace můžou pomocí sledování změn zodpovědět následující otázky týkající se změn provedených v tabulce uživatelů:

  • Jaké řádky se změnily pro uživatelskou tabulku?

    • Vyžaduje se pouze skutečnost, že se řádek změnil, ne kolikrát se řádek změnil, ani hodnoty jakýchkoli přechodných změn.

    • Nejnovější data lze získat přímo z tabulky, která se sleduje.

  • Změnil se řádek?

    • Skutečnost, že se řádek změnil a informace o změně musí být k dispozici a zaznamenány v době, kdy byla změna provedena ve stejné transakci.

Poznámka

Pokud aplikace vyžaduje informace o všech provedených změnách a přechodných hodnotách změněných dat, může být vhodné použít zachytávání dat změn místo sledování změn. Další informace naleznete v tématu o funkci Change Data Capture (SQL Server).

synchronizační aplikace One-Way a Two-Way

Aplikace, které musí synchronizovat data s instancí databázového stroje SQL Serveru, musí být schopny dotazovat na změny. Sledování změn lze použít jako základ pro jednosměrné i obousměrné synchronizační aplikace.

synchronizační aplikace One-Way

Jednosměrné synchronizační aplikace, jako je klient nebo aplikace pro ukládání do mezipaměti střední vrstvy, je možné sestavit, které používají sledování změn. Jak je znázorněno na následujícím obrázku, aplikace ukládání do mezipaměti vyžaduje ukládání dat do databázového stroje a ukládání do mezipaměti v jiných úložištích dat. Aplikace musí mít možnost uchovávat mezipaměť up-to-date se všemi změnami, které byly provedeny v databázových tabulkách. Neexistují žádné změny, které by se předávaly zpět do databázového stroje.

Diagram znázorňující jednosměrné synchronizační aplikace

synchronizační aplikace Two-Way

Obousměrné synchronizační aplikace lze také sestavit, které používají sledování změn. V tomto scénáři se data v instanci databázového stroje synchronizují s jedním nebo více úložišti dat. Data v těchto úložištích je možné aktualizovat a změny se musí synchronizovat zpět do databázového stroje.

diagram znázorňující obousměrné synchronizační aplikace

Dobrým příkladem obousměrné synchronizační aplikace je občas připojená aplikace. U tohoto typu aplikace se klientská aplikace dotazuje na a aktualizuje místní úložiště. Pokud je připojení dostupné mezi klientem a serverem, aplikace se synchronizuje se serverem a mění toky dat v obou směrech.

Obousměrné synchronizační aplikace musí být schopné detekovat konflikty. Ke konfliktu dojde v případě, že se stejná data změnila v obou úložištích dat v době mezi synchronizacemi. Díky možnosti detekovat konflikty může aplikace zajistit, aby se změny neztratily.

Jak funguje sledování změn

Ke konfiguraci sledování změn můžete použít příkazy DDL nebo SQL Server Management Studio. Další informace naleznete v tématu Povolení a zakázání sledování změn. Pokud chcete sledovat změny, musí být pro databázi nejprve povolené sledování změn a pak musí být povolené tabulky, které chcete sledovat v této databázi. Definice tabulky se nemusí žádným způsobem měnit a nevytvořily se žádné aktivační události.

Jakmile je sledování změn pro tabulku nakonfigurované, všechny příkazy DML, které ovlivňují řádky v tabulce, způsobí zaznamenání informací o sledování změn pro každý upravený řádek. K dotazování na změněné řádky a získání informací o změnách můžete použít funkce sledování změn.

Hodnoty sloupce primárního klíče jsou jedinými informacemi ze sledované tabulky, které se zaznamenávají spolu s informacemi o změnách. Tyto hodnoty identifikují změněné řádky. K získání nejnovějších dat pro tyto řádky může aplikace použít hodnoty sloupce primárního klíče pro spojení zdrojové tabulky se sledovanými tabulkami.

Informace o změně provedené v jednotlivých řádech lze získat také pomocí sledování změn. Například typ operace DML, která způsobila změnu (vložení, aktualizace nebo odstranění) nebo sloupce, které byly změněny jako součást operace aktualizace.

Všechny operace DML se sledují, i když se hodnota sloupce nezmění. Pokud například příkaz update nastaví sloupec na stejnou hodnotu, jakou už má, sloupec se stále považuje za změněný.

Vyčištění sledování změn

Informace o sledování změn pro všechny tabulky (povolené pro Change Tracking) jsou uloženy v úložišti řádků v paměti. Data sledování změn přidružená ke každé tabulce s povolenou funkcí Change Tracking se vyprázdní na každém kontrolním bodu z úložiště řádků v paměti do odpovídající interní tabulky na disku. Při kontrole se úložiště řádků v paměti vyprázdní také po přesunutí řádků do tabulek na disku.

Každá tabulka s povolenou funkcí Change Tracking má interní tabulku na disku, kterou používají funkce Change Tracking k určení verze změn a řádků, které se od určité verze změnily. Pokaždé, když se automatické vyčištění vlákno probudí, prohledá všechny uživatelské databáze v instanci SQL Serveru a identifikuje databáze s povoleným sledováním změn. Na základě nastavení doby uchovávání databáze se každá interní tabulka na disku vymaže ze svých záznamů, jejichž platnost vypršela.

Uložená procedura byla přidána v aktualizacích Service Pack pro SQL Server 2014 (12.x) a SQL Server 2016 (13.x) pro provádění ručního čištění interních tabulek řešení Change Tracking. Další informace o uložené proceduře jsou k dispozici v KB173157.