Condividi tramite


Abilitare e disabilitare il rilevamento delle modifiche (SQL Server)

In questo argomento viene descritto come abilitare e disabilitare il rilevamento delle modifiche per un database e una tabella.

Abilitazione del rilevamento delle modifiche per un database

Prima di utilizzare il rilevamento delle modifiche, è necessario abilitarlo a livello di database. Nell'esempio seguente viene illustrato come abilitare il rilevamento delle modifiche utilizzando 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 Studio utilizzando la finestra di dialogo Proprietà database (pagina ChangeTracking).

È 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.

Il valore di memorizzazione della modifica specifica il periodo di tempo durante il quale vengono mantenute le informazioni sul rilevamento delle modifiche. Le informazioni sul rilevamento delle modifiche precedenti a tale periodo di tempo vengono rimosse periodicamente. Durante l'impostazione di questo valore, considerare la frequenza di sincronizzazione delle applicazioni con le tabelle nel database. Il periodo di memorizzazione specificato deve durare almeno quanto il periodo di tempo massimo tra le sincronizzazioni. 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. 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.

Per abilitare o disabilitare l'attività di pulizia che rimuove le informazioni obsolete sul rilevamento delle modifiche, è possibile utilizzare l'opzione AUTO_CLEANUP. 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.

Per qualsiasi database che utilizza il rilevamento delle modifiche, tenere presente quanto segue:

  • Per utilizzare il rilevamento delle modifiche, il livello di compatibilità del database deve essere impostato su 90 o su un valore superiore. Se il livello di compatibilità del database è minore di 90, è possibile comunque configurare il rilevamento delle modifiche, ma la funzione CHANGETABLE, utilizzata per ottenere informazioni sul rilevamento delle modifiche, restituirà un errore.

  • L'utilizzo dell'isolamento dello snapshot rappresenta il modo più semplice per garantire che tutte le informazioni sul rilevamento delle modifiche siano coerenti. Per questo motivo, è consigliabile impostare l'isolamento dello snapshot per il database su ON. Per ulteriori informazioni, vedere Utilizzare il rilevamento delle modifiche (SQL Server).

Abilitazione del rilevamento delle modifiche per una tabella

Il rilevamento delle modifiche deve essere abilitato per ciascuna tabella per cui si desidera eseguirlo. Quando il rilevamento delle modifiche è abilitato, le relative informazioni vengono gestite per tutte le righe della tabella interessate da un'operazione DML.

Nell'esempio seguente viene illustrato come abilitare il rilevamento delle modifiche per una tabella utilizzando 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 Studio utilizzando la finestra di dialogo Proprietà database (pagina ChangeTracking).

Quando l'opzione TRACK_COLUMNS_UPDATED è impostata su ON, il Motore di database di SQL Server archivia informazioni aggiuntive sulle colonne aggiornate nella tabella interna del rilevamento delle modifiche. Il rilevamento a livello di colonna può abilitare la sincronizzazione delle sole colonne aggiornate da parte di un'applicazione. In tal modo si può migliorare efficienza e prestazioni. 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.

Disabilitazione del rilevamento delle modifiche per un database o una tabella

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. Per determinare le tabelle in cui è abilitato il rilevamento delle modifiche per un database, utilizzare la vista del catalogo sys.change_tracking_tables.

Quando non vengono rilevate modifiche in nessuna tabella di un database, è possibile disabilitare il rilevamento delle modifiche per il database. Nell'esempio seguente viene illustrato come disabilitare il rilevamento delle modifiche per un database utilizzando ALTER DATABASE.

ALTER DATABASE AdventureWorks2012
SET CHANGE_TRACKING = OFF

Nell'esempio seguente viene illustrato come disabilitare il rilevamento delle modifiche per una tabella utilizzando ALTER TABLE.

ALTER TABLE Person.Contact
DISABLE CHANGE_TRACKING;

Vedere anche

Riferimento

Proprietà database (pagina ChangeTracking)

Opzioni ALTER DATABASE SET (Transact-SQL)

sys.change_tracking_databases (Transact-SQL)

sys.change_tracking_tables (Transact-SQL)

Concetti

Rilevare le modifiche ai dati (SQL Server)

Informazioni sul rilevamento delle modifiche (SQL Server)

Utilizzare i dati delle modifiche (SQL Server)

Gestire il rilevamento delle modifiche (SQL Server)