Správa řešení Change Tracking (SQL Server)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Tento článek popisuje, jak spravovat sledování změn. Popisuje také, jak nakonfigurovat zabezpečení a určit účinky na úložiště a výkon při použití sledování změn.

Správa sledování změn

Následující části obsahují seznam zobrazení, oprávnění a nastavení katalogu, která jsou relevantní pro správu sledování změn.

Zobrazení katalogu

Pokud chcete zjistit, které tabulky a databáze mají povolené sledování změn, použijte následující zobrazení katalogu:

Zobrazení katalogu sys.internal_tables také obsahuje interní tabulky, které se vytvoří při povolení sledování změn pro uživatelskou tabulku.

Zabezpečení

Pokud chcete získat přístup k informacím o sledování změn pomocí funkcí sledování změn, musí mít objekt zabezpečení následující oprávnění:

  • SELECT oprávnění alespoň ke sloupcům primárního klíče v dotazované tabulce se sledováním změn.

  • VIEW CHANGE TRACKING oprávnění k tabulce, pro kterou se získávají změny. Oprávnění VIEW CHANGE TRACKING se vyžaduje z následujících důvodů:

    • Záznamy sledování změn obsahují informace o odstraněných řádcích. Záznamy používají hodnoty primárního klíče odstraněných řádků. Objektu zabezpečení může být uděleno oprávnění SELECT k tabulce se sledováním změn poté, co jsou odstraněna některá citlivá data. V takovém případě nechcete, aby měl tento objekt zabezpečení přístup k odstraněným informacím prostřednictvím sledování změn.

    • Informace o sledování změn můžou ukládat informace o tom, které sloupce se mění operacemi aktualizace. Subjektu zabezpečení může být odepřen přístup ke sloupci, který obsahuje citlivé informace. Avšak protože jsou k dispozici informace o sledování změn, může uživatel určit, že byla hodnota sloupce aktualizována, ale nemůže zjistit hodnotu tohoto sloupce.

Pochopte režii sledování změn

Když pro tabulku povolíte sledování změn, ovlivní to některé operace správy. Následující tabulka uvádí operace a efekty, které byste měli zvážit.

Operation Když je povolené sledování změn
DROP TABLE Odstraní se veškeré informace o sledování změn pro odstraněnou tabulku.
ALTER TABLE DROP CONSTRAINT Pokus o vyřazení PRIMARY KEY omezení selže. Než budete moci odebrat omezení PRIMARY KEY, musíte zakázat sledování změn.
ALTER TABLE DROP COLUMN Pokud je sloupec, který odstraňujete, součástí primárního klíče, není dovoleno tento sloupec odstranit bez ohledu na funkci sledování změn.

Pokud sloupec, který odstraňujete, není součástí primárního klíče, odstranění sloupce proběhne úspěšně. Nejprve byste ale měli porozumět vlivu na libovolnou aplikaci, která tato data synchronizuje. Pokud je pro tabulku povolené sledování změn sloupců, může se vynechaný sloupec vrátit jako součást informací o sledování změn. Za zpracování vyřazeného sloupce zodpovídá aplikace.
ALTER TABLE ADD COLUMN Pokud do sledované tabulky změn přidáte nový sloupec, přidání sloupce se nesleduje. Sledují se jenom aktualizace a změny provedené v novém sloupci.
ALTER TABLE ALTER COLUMN Změny datového typu sloupce bez primárního klíče se nesledují.
ALTER TABLE SWITCH Přepnutí oddílu selže, pokud je povolené sledování změn jedné nebo obou tabulek.
DROP INDEX, or ALTER INDEX DISABLE Index, který vynucuje primární klíč, nelze vynechat ani zakázat.
TRUNCATE TABLE Tabulku s povoleným sledováním změn můžete zkrátit. Řádky, které operace odstraní, se ale nesledují a aktualizuje se minimální platná verze. Když aplikace zkontroluje jeho verzi, kontrola značí, že verze je příliš stará a vyžaduje se opětovná inicializace. Tento stav je stejný, jako když je pro tabulku zakázáno sledování změn a poté znovu povoleno.

Použití sledování změn přidává do operací DML určité režijní náklady, protože operace ukládá informace o sledování změn.

Efekty na DML

Sledování změn je optimalizované tak, aby minimalizovalo režii na výkon operací DML. Dodatečná režie výkonu spojená s používáním sledování změn u tabulky je podobná režii, se kterou se setkáte při vytváření a údržbě indexu tabulky.

Pro každý řádek, který operace DML změní, systém přidá řádek do interní tabulky sledování změn. Účinek této akce vzhledem k operaci DML závisí na různých faktorech, například:

  • Počet sloupců primárního klíče

  • Množství dat změněných v řádku tabulky uživatele

  • Počet operací provedených v transakci

Izolace snímků, pokud se používá, má vliv také na výkon všech operací DML, ať už je povolené sledování změn, nebo ne.

Účinky na úložiště

Data sledování změn se ukládají v následujících typech interních tabulek:

  • Interní tabulka změn

    Každá tabulka uživatelů, která má povolené sledování změn, získá svou vlastní interní tabulku změn.

  • Interní tabulka transakcí

    Databáze obsahuje jednu interní tabulku transakcí.

Tyto interní tabulky ovlivňují požadavky na úložiště následujícími způsoby:

  • Pro každou změnu na každý řádek v tabulce uživatelů přidá sledování změn řádek do interní tabulky změn. Tento řádek má malou pevnou režii a proměnnou režii, která se rovná velikosti sloupců primárního klíče. Řádek může obsahovat volitelné kontextové informace nastavené aplikací. Pokud povolíte sledování sloupců, každý změněný sloupec vyžaduje v tabulce sledování 4 bajty.

  • Pro každou potvrzenou transakci přidá sledování změn řádek do interní tabulky transakcí.

Stejně jako u jiných interních tabulek můžete určit prostor používaný pro tabulky sledování změn pomocí sp_spaceused uložené procedury. Názvy interních tabulek můžete získat pomocí zobrazení katalogu sys.internal_tables , jak je znázorněno v následujícím příkladu.

sp_spaceused 'sys.change_tracking_309576141'  
sp_spaceused 'sys.syscommittab'