Události
SQL ve společnosti FabCon Vegas
31. 3. 23 - 2. 4. 23
Největší událost učení SQL, Fabric a Power BI. 31. března – 2. dubna. Pomocí kódu FABINSIDER uložte $400.
Zaregistrovat se ještě dnesTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
platí pro:SQL Server
Azure SQL Database
azure 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.
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?
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).
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.
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.
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
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.
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ý.
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.
Události
SQL ve společnosti FabCon Vegas
31. 3. 23 - 2. 4. 23
Největší událost učení SQL, Fabric a Power BI. 31. března – 2. dubna. Pomocí kódu FABINSIDER uložte $400.
Zaregistrovat se ještě dnesŠkolení
Modul
Sledování a synchronizace dat se službou Azure SQL Database - Training
Modul pro sledování dat Azure SQL, který se zabývá sledováním změn dat. Tento modul zkoumá nástroje, jako je zachytávání dat změn (CDC) a sledování změn.
Dokumentace
Práce se sledováním změn - SQL Server
Práce se sledováním změn (SQL Server)
Povolení a zakázání sledování změn - SQL Server
Povolení a zakázání řešení Change Tracking (SQL Server)
Sledování změn dat - SQL Server
Povolte aplikacím určit změny DML (operace vložení, aktualizace a odstranění), které byly provedeny v tabulkách uživatelů v databázi pomocí sledování změn a zachytávání dat změn.