Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
Den här artikeln beskriver hur du hanterar ändringsspårning. Den beskriver också hur du konfigurerar säkerhet och fastställer effekterna på lagring och prestanda när ändringsspårning används.
Hantera ändringsspårning
I följande avsnitt visas katalogvyer, behörigheter och inställningar som är relevanta för hantering av ändringsspårning.
Katalogvyer
Använd följande katalogvyer för att avgöra vilka tabeller och databaser som har ändringsspårning aktiverat:
Dessutom visar sys.internal_tables katalogvyn de interna tabeller som skapas när ändringsspårning är aktiverat för en användartabell.
Security
För att få åtkomst till information om ändringsspårning med hjälp av funktionerna för ändringsspårning måste huvudkontot ha följande behörigheter:
SELECTbehörighet för åtminstone primärnyckelkolumnerna i den ändringsspårade tabellen för den tabell som frågan körs mot.VIEW CHANGE TRACKINGbehörighet för tabellen som ändringar hämtas för. BehörighetenVIEW CHANGE TRACKINGkrävs av följande skäl:Ändringsspårningsposter innehåller information om rader som tas bort. Posterna använder primärnyckelvärdena för de rader som tas bort. Ett huvudnamn kan beviljas
SELECTbehörighet för en ändringsspårad tabell när vissa känsliga data har tagits bort. I det här fallet vill du inte att huvudobjektet får åtkomst till den borttagna informationen genom att använda ändringsspårning.Information om ändringsspårning kan lagra information om vilka kolumner som ändras av uppdateringsåtgärder. Ett huvudnamn kan nekas behörighet till en kolumn som innehåller känslig information. Eftersom information om spårning av ändringar finns tillgänglig kan ett säkerhetsobjekt fastställa att värdet i en kolumn har uppdaterats, men säkerhetsobjektet kan inte fastställa kolumnens värde.
Förstå omkostnader för ändringsspårning
När du aktiverar ändringsspårning för en tabell påverkar det vissa administrationsåtgärder. I följande tabell visas de åtgärder och de effekter som du bör tänka på.
| Verksamhet | När ändringsspårning är aktiverat |
|---|---|
DROP TABLE |
All ändringsspårningsinformation för den borttagna tabellen tas bort. |
ALTER TABLE DROP CONSTRAINT |
Ett försök att släppa villkoret PRIMARY KEY misslyckas. Du måste inaktivera ändringsspårning innan du kan släppa en PRIMARY KEY begränsning. |
ALTER TABLE DROP COLUMN |
Om en kolumn som du släpper är en del av den primära nyckeln är det inte tillåtet att släppa kolumnen, oavsett ändringsspårning. Om kolumnen som du tar bort inte ingår i primärnyckeln, går det att ta bort kolumnen. Du bör dock först förstå effekten på alla program som synkroniserar dessa data. Om spårning av kolumnändringar är aktiverat för tabellen kan den borttagna kolumnen fortfarande returneras som en del av informationen om ändringsspårning. Det är programmets ansvar att hantera den borttagna kolumnen. |
ALTER TABLE ADD COLUMN |
Om du lägger till en ny kolumn i den ändringsspårade tabellen spåras inte tillägget av kolumnen. Endast uppdateringar och ändringar som görs i den nya kolumnen spåras. |
ALTER TABLE ALTER COLUMN |
Datatypändringar för en icke-primär nyckelkolumn spåras inte. |
ALTER TABLE SWITCH |
Det går inte att växla en partition om en eller båda tabellerna har aktiverat ändringsspårning. |
DROP INDEX, or ALTER INDEX DISABLE |
Indexet som framtvingar primärnyckeln kan inte tas bort eller inaktiveras. |
TRUNCATE TABLE |
Du kan trunkera en tabell som har aktiverat ändringsspårning. De rader som åtgärden tar bort spåras dock inte och den lägsta giltiga versionen uppdateras. När ett program kontrollerar sin version anger kontrollen att versionen är för gammal och att en återinitiering krävs. Det här villkoret är detsamma som att ändringsspårning inaktiveras och sedan kan återanvändas för tabellen. |
Om du använder ändringsspårning läggs vissa omkostnader till DML-åtgärder eftersom åtgärden lagrar information om ändringsspårning.
Effekter på DML
Ändringsspårning optimeras för att minimera prestandakostnaderna för DML-åtgärder. De inkrementella prestandakostnader som följer med ändringsspårning i en tabell liknar de omkostnader som uppstår när du skapar och underhåller ett index för en tabell.
För varje rad som en DML-åtgärd ändras lägger systemet till en rad i den interna tabellen för ändringsspårning. Effekten av den här åtgärden, i förhållande till DML-åtgärden, beror på olika faktorer, till exempel:
Antalet primärnyckelkolumner
Mängden data som har ändrats i användartabellraden
Antalet åtgärder som utförs i en transaktion
Isolering av ögonblicksbilder påverkar även prestanda för alla DML-åtgärder, oavsett om ändringsspårning är aktiverat eller inte.
Effekter på lagring
Ändringsspårningsdata lagras i följande typer av interna tabeller:
Intern ändringstabell
Varje användartabell som har ändringsspårning aktiverad hämtar en egen intern ändringstabell.
Intern transaktionstabell
Databasen har en intern transaktionstabell.
Dessa interna tabeller påverkar lagringskraven på följande sätt:
För varje ändring av varje rad i användartabellen lägger ändringsspårning till en rad i den interna ändringstabellen. Den här raden har en liten fast omkostnad plus en variabel som motsvarar storleken på primärnyckelkolumnerna. Raden kan innehålla valfri kontextinformation som angetts av ett program. Om du aktiverar kolumnspårning kräver varje ändrad kolumn 4 byte i spårningstabellen.
För varje bekräftad transaktion lägger ändringsspårning till en rad i en intern transaktionstabell.
Precis som med andra interna tabeller kan du bestämma vilket utrymme som används för tabellerna för ändringsspårning med hjälp av den sp_spaceused lagrade proceduren. Du kan hämta namnen på de interna tabellerna med hjälp av sys.internal_tables katalogvyn, som du ser i följande exempel.
sp_spaceused 'sys.change_tracking_309576141'
sp_spaceused 'sys.syscommittab'