Partager via


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

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de données SQL dans Microsoft Fabric

Cet article explique comment activer et désactiver le 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 montre comment activer le suivi des modifications à l’aide des options ALTER DATABASE SET.

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 et CHANGE_RETENTION les AUTO_CLEANUP options lorsque vous activez le suivi des modifications, et vous pouvez modifier les valeurs à tout moment après l’activation du suivi des modifications.

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 définissez cette valeur, vous devez prendre en compte la fréquence à laquelle les applications se synchronisent avec les tables de 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 permettant d’activer ou de désactiver la tâche de nettoyage qui supprime les anciennes informations de suivi des modifications. Cela peut être utile lorsqu’il existe un problème temporaire qui empêche les applications de synchroniser et 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. Pour cette raison, nous vous recommandons vivement de définir ON l’isolation d’instantané pour la base de données. Pour plus d’informations, consultez Utiliser le suivi des modifications (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 ON, le moteur de base de données SQL Server stocke des informations supplémentaires sur les colonnes mises à jour dans 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 maintenance des informations de suivi des colonnes ajoute une surcharge de stockage supplémentaire, cette option est définie OFF par défaut.

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

Le suivi des modifications doit d’abord être désactivé pour toutes les tables suivies par les modifications avant que le suivi des modifications puisse être défini OFF 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 montre comment désactiver le suivi des modifications pour une base de données à l’aide des options ALTER DATABASE SET.

ALTER DATABASE AdventureWorks2022
SET CHANGE_TRACKING = OFF