Delen via


Wijzigingen bijhouden in- en uitschakelen (SQL Server)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

In dit onderwerp wordt beschreven hoe u wijzigingen bijhouden voor een database en een tabel inschakelt en uitschakelt.

Wijzigingen bijhouden inschakelen voor een database

Voordat u wijzigingen bijhouden kunt gebruiken, moet u het bijhouden van wijzigingen op databaseniveau inschakelen. In het volgende voorbeeld ziet u hoe u wijzigingen bijhouden kunt inschakelen met behulp van ALTER DATABASE-.

ALTER DATABASE AdventureWorks2022  
SET CHANGE_TRACKING = ON  
(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON)  

U kunt ook het bijhouden van wijzigingen in SQL Server Management Studio inschakelen met behulp van het dialoogvenster Database-eigenschappen (ChangeTracking Page). Als een database geoptimaliseerde tabellen voor geheugen bevat, kunt u het bijhouden van wijzigingen niet inschakelen met SQL Server Management Studio. Als u dit wilt inschakelen, gebruikt u T-SQL.

U kunt de opties voor CHANGE_RETENTION en AUTO_CLEANUP opgeven wanneer u wijzigingen bijhouden inschakelt en u kunt de waarden op elk gewenst moment wijzigen nadat het bijhouden van wijzigingen is ingeschakeld.

De waarde voor het bewaren van wijzigingen geeft de periode aan waarvoor informatie over het bijhouden van wijzigingen wordt bewaard. De informatie over het bijhouden van wijzigingen die ouder is dan deze periode, wordt periodiek verwijderd. Wanneer u deze waarde instelt, moet u overwegen hoe vaak toepassingen worden gesynchroniseerd met de tabellen in de database. De opgegeven bewaarperiode moet ten minste zo lang zijn als de maximale periode tussen synchronisaties. Als een toepassing wijzigingen met langere intervallen verkrijgt, zijn de resultaten die worden geretourneerd mogelijk onjuist omdat een deel van de wijzigingsgegevens waarschijnlijk is verwijderd. Om te voorkomen dat onjuiste resultaten worden verkregen, kan een toepassing de CHANGE_TRACKING_MIN_VALID_VERSION systeemfunctie gebruiken om te bepalen of het interval tussen synchronisaties te lang is geweest.

U kunt de optie AUTO_CLEANUP gebruiken om de opschoontaak in of uit te schakelen waarmee oude gegevens over wijzigingen bijhouden worden verwijderd. Dit kan handig zijn als er een tijdelijk probleem is dat voorkomt dat toepassingen worden gesynchroniseerd en het proces voor het verwijderen van gegevens voor het bijhouden van wijzigingen ouder dan de bewaarperiode moet worden onderbroken totdat het probleem is opgelost.

Houd rekening met het volgende voor elke database die gebruikmaakt van wijzigingen bijhouden:

  • Als u wijzigingen bijhouden wilt gebruiken, moet het compatibiliteitsniveau van de database zijn ingesteld op 90 of hoger. Als een database een compatibiliteitsniveau van minder dan 90 heeft, kunt u het bijhouden van wijzigingen configureren. De functie CHANGETABLE, die wordt gebruikt om gegevens over wijzigingen bijhouden te verkrijgen, retourneert echter een fout.

  • Het gebruik van isolatie van momentopnamen is de eenvoudigste manier om ervoor te zorgen dat alle informatie over het bijhouden van wijzigingen consistent is. Daarom raden we u ten zeerste aan de isolatie van momentopnamen in te stellen op AAN voor de database. Zie Werken met wijzigingen bijhouden (SQL Server)voor meer informatie.

Wijzigingen bijhouden inschakelen voor een tabel

Wijzigingen bijhouden moet zijn ingeschakeld voor elke tabel die u wilt bijhouden. Wanneer wijzigingen bijhouden is ingeschakeld, wordt informatie over het bijhouden van wijzigingen bijgehouden voor alle rijen in de tabel die worden beïnvloed door een DML-bewerking.

In het volgende voorbeeld ziet u hoe u wijzigingsopvolging voor een tabel inschakelt met behulp van ALTER TABLE.

ALTER TABLE Person.Contact  
ENABLE CHANGE_TRACKING  
WITH (TRACK_COLUMNS_UPDATED = ON)  

U kunt het bijhouden van wijzigingen ook inschakelen voor een tabel in SQL Server Management Studio met behulp van het dialoogvenster Database-eigenschappen (ChangeTracking-pagina).

Wanneer de optie TRACK_COLUMNS_UPDATED is ingesteld op AAN, slaat de SQL Server Database Engine extra informatie op over welke kolommen zijn bijgewerkt naar de interne tabel voor het bijhouden van wijzigingen. Met het bijhouden van kolommen kan een toepassing alleen de kolommen synchroniseren die zijn bijgewerkt. Dit kan de efficiëntie en prestaties verbeteren. Omdat het bijhouden van kolomtrackinggegevens echter extra opslagoverhead toevoegt, is deze optie standaard ingesteld op UIT.

Wijzigingen bijhouden uitschakelen voor een tabel of database

Wijzigingen bijhouden moet eerst worden uitgeschakeld voor alle tabellen waarvoor wijzigingen worden bijgehouden voordat het bijhouden van wijzigingen voor de database kan worden uitgeschakeld. Gebruik de sys.change_tracking_tables catalogusweergave om de tabellen te bepalen waarvoor wijzigingen bijhouden is ingeschakeld voor een database.

In het volgende voorbeeld ziet u hoe u het bijhouden van wijzigingen voor een tabel kunt uitschakelen met behulp van ALTER TABLE.

ALTER TABLE Person.Contact  
DISABLE CHANGE_TRACKING;  

Wanneer er geen tabellen in een database wijzigingen bijhouden, kunt u het bijhouden van wijzigingen voor de database uitschakelen. In het volgende voorbeeld ziet u hoe u het bijhouden van wijzigingen voor een database uitschakelt met behulp van ALTER DATABASE.

ALTER DATABASE AdventureWorks2022  
SET CHANGE_TRACKING = OFF  

Zie ook

Database-eigenschappen (ChangeTracking-pagina)
ALTER DATABASE SET Options (Transact-SQL)
sys.change_tracking_databases (Transact-SQL)
sys.change_tracking_tables (Transact-SQL)
Gegevenswijzigingen bijhouden (SQL Server)
over wijzigingen bijhouden (SQL Server)
werken met change data (SQL Server)
Wijzigingen bijhouden (SQL Server) beheren