Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL 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, můžete použít 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í:
SELECToprávnění alespoň pro sloupce primárního klíče v tabulce sledované změnou na tabulku, která se dotazuje.VIEW CHANGE TRACKINGoprávnění k tabulce, pro kterou se získávají změny. OprávněníVIEW CHANGE TRACKINGse 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 řádků, které byly odstraněny. Po odstranění některých citlivých dat mohlo být objektu zabezpečení uděleno
SELECToprávnění ke sledované tabulce změn. V takovém případě byste nechtěli, aby tento objekt zabezpečení měl přístup k odstraněným informacím pomocí sledování změn.Informace o sledování změn můžou ukládat informace o tom, které sloupce byly změněny operacemi aktualizace. Objekt zabezpečení může být odepřen oprávnění ke sloupci, který obsahuje citlivé informace. Vzhledem k tomu, že informace o sledování změn jsou k dispozici, může objekt zabezpečení určit, že hodnota sloupce byla aktualizována, ale objekt zabezpečení nemůže určit hodnotu sloupce.
Vysvětlení režie sledování změn
Pokud je u tabulky povolené sledování změn, ovlivní 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 |
Odeberou se všechny informace o sledování změn vyřazené tabulky. |
ALTER TABLE DROP CONSTRAINT |
Pokus o vyřazení PRIMARY KEY omezení selže. Sledování změn musí být zakázané, aby PRIMARY KEY bylo možné omezení vynechat. |
ALTER TABLE DROP COLUMN |
Pokud je vyřazený sloupec součástí primárního klíče, zrušení sloupce není povoleno bez ohledu na sledování změn. Pokud sloupec, který se zahodí, není součástí primárního klíče, přetažení sloupce proběhne úspěšně. Účinek na libovolnou aplikaci, která tato data synchronizuje, by se ale mělo nejprve pochopit. 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 se do sledované tabulky změn přidá 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 |
Zkrácení tabulky lze provést u tabulky, která má povolené sledování změn. Řá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. Je to stejné jako zakázání sledování změn a následné opětovné povolení tabulky. |
Použití sledování změn přidává do operací DML určité režijní náklady kvůli informacím o sledování změn, které se ukládají jako součást operace.
Efekty na DML
Sledování změn je optimalizované tak, aby se minimalizovala režijní náklady na výkon operací DML. Režijní náklady na přírůstkový výkon související s používáním sledování změn v tabulce se podobají režijním nákladům, které vzniknou při vytvoření indexu pro tabulku a je potřeba je udržovat.
Pro každý řádek, který se změní operací DML, se do interní tabulky sledování změn přidá řádek. Účinek této operace vzhledem k operaci DML závisí na různých faktorech, například:
Počet sloupců primárního klíče
Množství dat, která se mění v řádku tabulky uživatele
Počet operací prováděných v transakci
Izolace snímků, pokud se používá, má také vliv na výkon pro všechny operace DML, ať už je sledování změn povolené 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
Pro každou tabulku uživatelů, která má povolené sledování změn, existuje jedna interní tabulka změn.
Interní tabulka transakcí
Pro databázi existuje jedna interní transakční tabulka.
Tyto interní tabulky ovlivňují požadavky na úložiště následujícími způsoby:
Pro každou změnu každého řádku v tabulce uživatele se do interní tabulky změn přidá řádek. 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í. A pokud je sledování sloupců povolené, každý změněný sloupec vyžaduje v tabulce sledování 4 bajty.
Pro každou potvrzenou transakci se do interní tabulky transakcí přidá řádek.
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 lze 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'