Activer et désactiver le suivi des modifications (SQL Server)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Cette rubrique décrit l'activation et la désactivation du suivi des modifications pour une base de données et une table.

Activer le suivi des modifications pour une base de données

Avant de pouvoir utiliser le suivi des modifications, vous devez l'activer au niveau de la base de données. L’exemple suivant indique comment activer le suivi des modifications en utilisant ALTER DATABASE.

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

Vous pouvez également activer le suivi des modifications dans SQL Server Management Studio en utilisant la boîte de dialogue Propriétés de la base de données (page Suivi des modifications). Si une base de données contient des tables à mémoire optimisée, vous ne pouvez pas activer le suivi des modifications avec SQL Server Management Studio. Pour l’activer, utilisez T-SQL.

Vous pouvez spécifier les options CHANGE_RETENTION et AUTO_CLEANUP lorsque vous activez le suivi des modifications et vous pouvez modifier leurs valeurs à tout moment une fois que le suivi des modifications a été activé.

La valeur de la rétention des modifications indique la période pendant laquelle les informations de suivi des modifications sont conservées. À l'issue de cette période, les informations de suivi des modifications sont supprimées. Lorsque vous affectez cette valeur, vous devez considérer la fréquence à laquelle les applications sont synchronisées avec les tables incluses dans la base de données. En effet, la période de rétention spécifiée doit être supérieure ou égale à la période maximale entre deux synchronisations. Si une application obtient des modifications sur des intervalles plus longs, les résultats retournés risquent d'être incorrects, parce qu'une partie des informations de modification aura probablement été supprimée. Pour éviter d'obtenir des résultats incorrects, une application peut utiliser la fonction système CHANGE_TRACKING_MIN_VALID_VERSION pour déterminer si l'intervalle entre synchronisations a été trop long.

Vous pouvez utiliser l'option AUTO_CLEANUP pour activer ou désactiver la tâche de nettoyage qui permet de supprimer les informations de suivi des modifications anciennes. Ce paramètre peut s'avérer utile lorsqu'il existe un problème temporaire qui empêche les applications de se synchroniser et que le processus de suppression des informations de suivi des modifications antérieures à la période de rétention doit être suspendu jusqu'à ce que le problème soit résolu.

Pour toute base de données qui utilise le suivi des modifications, ayez conscience de ce qui suit :

  • Pour utiliser le suivi des modifications, le niveau de compatibilité de la base de données doit être défini à 90 ou plus. Si une base de données présente un niveau de compatibilité inférieur à 90, vous pouvez configurer le suivi des modifications. Dans ce cas, toutefois, la fonction CHANGETABLE, utilisée pour obtenir des informations de suivi des modifications, retourne une erreur.

  • L'utilisation de l'isolement d'instantané constitue le moyen le plus simple de garantir la cohérence de toutes les informations de suivi des modifications. C'est pourquoi nous recommandons fortement d'affecter la valeur ON à cet isolement d'instantané pour la base de données. Pour plus d’informations, consultez Work with Change Tracking (SQL Server).

Activer le suivi des modifications pour une table

Le suivi des modifications doit être activé pour chaque table que vous souhaitez suivre. Lorsque le suivi des modifications est activé, les informations correspondantes sont conservées pour toutes les lignes de la table qui sont affectées par une opération DML.

L’exemple suivant indique comment activer le suivi des modifications pour une table en utilisant ALTER TABLE.

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

Vous pouvez également activer le suivi des modifications pour une table dans SQL Server Management Studio en utilisant la boîte de dialogue Propriétés de la base de données (page Suivi des modifications).

Lorsque l’option TRACK_COLUMNS_UPDATED est définie sur ON, le moteur de base de données SQL Server stocke des informations supplémentaires sur les colonnes mises à jour vers la table de suivi des modifications interne. Le suivi des colonnes peut permettre à une application de synchroniser uniquement les colonnes mises à jour. Il permet ainsi d'améliorer l'efficacité et les performances. Toutefois, étant donné que la conservation des informations de suivi des colonnes augmente la charge de stockage, cette option a la valeur OFF par défaut.

Désactiver le suivi des modifications pour une table ou une base de données

Vous devez d'abord désactiver le suivi des modifications pour toutes les tables qui en font l'objet avant d'affecter la valeur OFF au suivi des modifications pour la base de données. Pour déterminer les tables dont le suivi des modifications est activé pour une base de données, utilisez l’affichage catalogue sys.change_tracking_tables .

L’exemple suivant indique comment désactiver le suivi des modifications pour une table en utilisant ALTER TABLE.

ALTER TABLE Person.Contact  
DISABLE CHANGE_TRACKING;  

Quand aucune table n'effectue un suivi des modifications dans une base de données, vous pouvez désactiver le suivi des modifications pour cette base de données. L’exemple suivant indique comment désactiver le suivi des modifications pour une base de données en utilisant ALTER DATABASE.

ALTER DATABASE AdventureWorks2022  
SET CHANGE_TRACKING = OFF  

Voir aussi

Propriétés de la base de données (page Suivi des modifications)
Options SET d’ALTER DATABASE (Transact-SQL)
sys.change_tracking_databases (Transact-SQL)
sys.change_tracking_tables (Transact-SQL)
Suivre les modifications de données (SQL Server)
À propos du suivi des modifications (SQL Server)
Utiliser les données modifiées (SQL Server)
Gérer le suivi des modifications (SQL Server)