Abilitare e disabilitare il rilevamento delle modifiche (SQL Server)Enable and Disable Change Tracking (SQL Server)

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2008)sìDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

In questo argomento viene descritto come abilitare e disabilitare il rilevamento delle modifiche per un database e una tabella.This topic describes how to enable and disable change tracking for a database and a table.

Abilitazione del rilevamento delle modifiche per un databaseEnable Change Tracking for a Database

Prima di utilizzare il rilevamento delle modifiche, è necessario abilitarlo a livello di database.Before you can use change tracking, you must enable change tracking at the database level. Nell'esempio seguente viene illustrato come abilitare il rilevamento delle modifiche usando ALTER DATABASE.The following example shows how to enable change tracking by using ALTER DATABASE.

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

È anche possibile abilitare il rilevamento delle modifiche in SQL Server Management StudioSQL Server Management Studio tramite la finestra di dialogo Proprietà database (pagina Rilevamento delle modifiche) .You can also enable change tracking in SQL Server Management StudioSQL Server Management Studio by using the Database Properties (ChangeTracking Page) dialog box.

È possibile specificare le opzioni CHANGE_RETENTION e AUTO_CLEANUP quando si abilita il rilevamento delle modifiche ed è possibile modificare i valori in qualsiasi momento dopo l'abilitazione del rilevamento.You can specify the CHANGE_RETENTION and AUTO_CLEANUP options when you enable change tracking, and you can change the values at any time after change tracking is enabled.

Il valore di memorizzazione della modifica specifica il periodo di tempo durante il quale vengono mantenute le informazioni sul rilevamento delle modifiche.The change retention value specifies the time period for which change tracking information is kept. Le informazioni sul rilevamento delle modifiche precedenti a tale periodo di tempo vengono rimosse periodicamente.Change tracking information that is older than this time period is removed periodically. Durante l'impostazione di questo valore, considerare la frequenza di sincronizzazione delle applicazioni con le tabelle nel database.When you are setting this value, you should consider how often applications will synchronize with the tables in the database. Il periodo di memorizzazione specificato deve durare almeno quanto il periodo di tempo massimo tra le sincronizzazioni.The specified retention period must be at least as long as the maximum time period between synchronizations. Se un'applicazione ottiene modifiche a intervalli più lunghi, i risultati restituiti potrebbero non essere corretti, poiché alcune delle informazioni sulle modifiche sono state probabilmente rimosse.If an application obtains changes at longer intervals, the results that are returned might be incorrect because some of the change information has probably been removed. Per evitare di ottenere risultati non corretti, un'applicazione può utilizzare la funzione di sistema CHANGE_TRACKING_MIN_VALID_VERSION per determinare se l'intervallo tra sincronizzazioni è stato troppo lungo.To avoid obtaining incorrect results, an application can use the CHANGE_TRACKING_MIN_VALID_VERSION system function to determine whether the interval between synchronizations has been too long.

Per abilitare o disabilitare l'attività di pulizia che rimuove le informazioni obsolete sul rilevamento delle modifiche, è possibile utilizzare l'opzione AUTO_CLEANUP.You can use the AUTO_CLEANUP option to enable or disable the cleanup task that removes old change tracking information. Questa procedura può risultare utile quando un problema temporaneo impedisce la sincronizzazione delle applicazioni e la procedura di rimozione delle informazioni sul rilevamento delle modifiche precedenti al periodo di memorizzazione deve essere messa in pausa finché il problema non viene risolto.This can be useful when there is a temporary problem that prevents applications from synchronizing and the process for removing change tracking information older than the retention period must be paused until the problem is resolved.

Per qualsiasi database che utilizza il rilevamento delle modifiche, tenere presente quanto segue:For any database that uses change tracking, be aware of the following:

  • Per utilizzare il rilevamento delle modifiche, il livello di compatibilità del database deve essere impostato su 90 o su un valore superiore.To use change tracking, the database compatibility level must be set to 90 or greater. Se il livello di compatibilità del database è minore di 90, è possibile comunque configurare il rilevamento delle modifiche,If a database has a compatibility level of less than 90, you can configure change tracking. ma la funzione CHANGETABLE, utilizzata per ottenere informazioni sul rilevamento delle modifiche, restituirà un errore.However, the CHANGETABLE function, which is used to obtain change tracking information, will return an error.

  • L'utilizzo dell'isolamento dello snapshot rappresenta il modo più semplice per garantire che tutte le informazioni sul rilevamento delle modifiche siano coerenti.Using snapshot isolation is the easiest way for you to help ensure that all change tracking information is consistent. Per questo motivo, è consigliabile impostare l'isolamento dello snapshot per il database su ON.For this reason, we strongly recommend that snapshot isolation be set to ON for the database. Per altre informazioni, vedere Usare il rilevamento delle modifiche (SQL Server).For more information, see Work with Change Tracking (SQL Server).

Abilitazione del rilevamento delle modifiche per una tabellaEnable Change Tracking for a Table

Il rilevamento delle modifiche deve essere abilitato per ciascuna tabella per cui si desidera eseguirlo.Change tracking must be enabled for each table that you want tracked. Quando il rilevamento delle modifiche è abilitato, le relative informazioni vengono gestite per tutte le righe della tabella interessate da un'operazione DML.When change tracking is enabled, change tracking information is maintained for all rows in the table that are affected by a DML operation.

Nell'esempio seguente viene illustrato come abilitare il rilevamento delle modifiche per una tabella tramite ALTER TABLE.The following example shows how to enable change tracking for a table by using ALTER TABLE.

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

È anche possibile abilitare il rilevamento delle modifiche per una tabella in SQL Server Management StudioSQL Server Management Studio tramite la finestra di dialogo Proprietà database (pagina Rilevamento delle modifiche) .You can also enable change tracking for a table in SQL Server Management StudioSQL Server Management Studio by using the Database Properties (ChangeTracking Page) dialog box.

Quando l'opzione TRACK_COLUMNS_UPDATED è impostata su ON, nel Motore di database di SQL ServerSQL Server Database Engine vengono archiviate informazioni aggiuntive sulle colonne aggiornate nella tabella del rilevamento delle modifiche interna.When the TRACK_COLUMNS_UPDATED option is set to ON, the Motore di database di SQL ServerSQL Server Database Engine stores extra information about which columns were updated to the internal change tracking table. Il rilevamento a livello di colonna consente di sincronizzare solo le colonne aggiornate.Column tracking can enable an application to synchronize only those columns that were updated. Ciò può migliorare efficienza e prestazioni.This can improve efficiency and performance. Tuttavia, poiché la gestione delle informazioni sul rilevamento a livello della colonna aggiunge un ulteriore overhead di archiviazione, per impostazione predefinita questa opzione è impostata su OFF.However, because maintaining column tracking information adds some extra storage overhead, this option is set to OFF by default.

Disabilitazione del rilevamento delle modifiche per un database o una tabellaDisable Change Tracking for a Database or Table

Il rilevamento delle modifiche deve essere prima disabilitato per tutte le tabelle di cui sono state rilevate le modifiche prima che il rilevamento possa essere impostato su OFF per il database.Change tracking must first be disabled for all change-tracked tables before change tracking can be set to OFF for the database. Per determinare le tabelle in cui è abilitato il rilevamento delle modifiche per un database, usare la vista del catalogo sys.change_tracking_tables .To determine the tables that have change tracking enabled for a database, use the sys.change_tracking_tables catalog view.

Quando non vengono rilevate modifiche in nessuna tabella di un database, è possibile disabilitare il rilevamento delle modifiche per il database.When no tables in a database track changes, you can disable change tracking for the database. Nell'esempio seguente viene illustrato come disabilitare il rilevamento delle modifiche per un database tramite ALTER DATABASE.The following example shows how to disable change tracking for a database by using ALTER DATABASE.

ALTER DATABASE AdventureWorks2012  
SET CHANGE_TRACKING = OFF  

Nell'esempio seguente viene illustrato come disabilitare il rilevamento delle modifiche per una tabella tramite ALTER TABLE.The following example shows how to disable change tracking for a table by using ALTER TABLE.

ALTER TABLE Person.Contact  
DISABLE CHANGE_TRACKING;  

Vedere ancheSee Also

Proprietà database (pagina Rilevamento delle modifiche) Database Properties (ChangeTracking Page)
Opzioni di ALTER DATABASE SET (Transact-SQL) ALTER DATABASE SET Options (Transact-SQL)
sys.change_tracking_databases (Transact-SQL) sys.change_tracking_databases (Transact-SQL)
sys.change_tracking_tables (Transact-SQL) sys.change_tracking_tables (Transact-SQL)
Rilevare le modifiche ai dati (SQL Server) Track Data Changes (SQL Server)
Informazioni sul rilevamento delle modifiche (SQL Server) About Change Tracking (SQL Server)
Usare Change Data (SQL Server) Work with Change Data (SQL Server)
Gestire il rilevamento delle modifiche (SQL Server) Manage Change Tracking (SQL Server)