Habilitar e desabilitar o controle de alterações (SQL Server)Enable and Disable Change Tracking (SQL Server)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure nãoAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Este tópico descreve como habilitar e desabilitar o controle de alterações para um banco de dados e uma tabela.This topic describes how to enable and disable change tracking for a database and a table.

Habilitar o controle de alterações para um banco de dadosEnable Change Tracking for a Database

Antes de usar o controle de alterações, você deve habilitar o controle de alterações no nível de banco de dados.Before you can use change tracking, you must enable change tracking at the database level. O exemplo a seguir mostra como habilitar o controle de alterações 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)  

Você também pode habilitar o controle de alterações no SQL Server Management StudioSQL Server Management Studio usando a caixa de diálogo Propriedades do Banco de Dados (Página Controle de Alterações) .You can also enable change tracking in SQL Server Management StudioSQL Server Management Studio by using the Database Properties (ChangeTracking Page) dialog box.

Você pode especificar as opções CHANGE_RETENTION e AUTO_CLEANUP quando habilitar o controle de alterações e alterar os valores a qualquer momento depois que o controle de alterações estiver habilitado.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.

O valor de retenção determina o período de tempo que o controle de alterações mantém as informações.The change retention value specifies the time period for which change tracking information is kept. Informações do controle de alterações anteriores a esse período de tempo são removidas periodicamente.Change tracking information that is older than this time period is removed periodically. Quando estiver definindo esse valor, deverá considerar com que frequência os aplicativos serão sincronizados com as tabelas no banco de dados.When you are setting this value, you should consider how often applications will synchronize with the tables in the database. O período de retenção especificado deve ter pelo menos a duração do período de tempo máximo entre as sincronizações.The specified retention period must be at least as long as the maximum time period between synchronizations. Se um aplicativo obtém as alterações em intervalos maiores, os resultados retornados podem ser incorretos porque algumas informações de alterações podem ter sido removidas.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. Para evitar resultados incorretos, um aplicativo pode usar a função de sistema CHANGE_TRACKING_MIN_VALID_VERSION para determinar se o intervalo entre as sincronizações foi muito longo.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.

Use a opção AUTO_CLEANUP para habilitar ou desabilitar a tarefa de limpeza que remove informações antigas de controle de alterações.You can use the AUTO_CLEANUP option to enable or disable the cleanup task that removes old change tracking information. Isso pode ser útil quando há um problema temporário que impede os aplicativos de sincronizarem e o processo para remover as informações do controle de alterações anterior ao período de retenção precisa ser interrompido até que o problema seja resolvido.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.

Para qualquer banco de dados que use o controle de alterações, lembre-se do seguinte:For any database that uses change tracking, be aware of the following:

  • Para usar o controle de alterações, o nível de compatibilidade do banco de dados deve ser definido como 90 ou mais.To use change tracking, the database compatibility level must be set to 90 or greater. Se o nível de compatibilidade de um banco de dados for inferior a 90, você poderá configurar o controle de alterações.If a database has a compatibility level of less than 90, you can configure change tracking. No entanto, a função CHANGETABLE, usada para obter informações do controle de alterações, retornará um erro.However, the CHANGETABLE function, which is used to obtain change tracking information, will return an error.

  • Usar o isolamento do instantâneo é o modo mais fácil de garantir que todas as informações do controle de alterações sejam consistentes.Using snapshot isolation is the easiest way for you to help ensure that all change tracking information is consistent. Por esse motivo, é estritamente recomendável que o isolamento do instantâneo seja definido como ON para o banco de dados.For this reason, we strongly recommend that snapshot isolation be set to ON for the database. Para obter mais informações, veja Trabalhar com o controle de alterações (SQL Server).For more information, see Work with Change Tracking (SQL Server).

Habilitar o controle de alterações para uma tabelaEnable Change Tracking for a Table

O controle de alterações deve ser habilitado para cada tabela que você deseja controlar.Change tracking must be enabled for each table that you want tracked. Quando o controle de alterações está habilitado, são mantidas informações sobre todas as linhas da tabela afetadas por uma operação DML.When change tracking is enabled, change tracking information is maintained for all rows in the table that are affected by a DML operation.

O exemplo a seguir mostra como habilitar o controle de alterações para uma tabela usando 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)  

Você também pode habilitar o controle de alterações para uma tabela no SQL Server Management StudioSQL Server Management Studio usando a caixa de diálogo Propriedades do Banco de Dados (Página Controle de Alterações) .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 a opção TRACK_COLUMNS_UPDATED é definida como ON, o Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine armazena informações extras sobre quais colunas foram atualizadas na tabela interna de controle de alterações.When the TRACK_COLUMNS_UPDATED option is set to ON, the Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine stores extra information about which columns were updated to the internal change tracking table. O controle de coluna pode permitir a um aplicativo sincronizar apenas as colunas que foram atualizadas.Column tracking can enable an application to synchronize only those columns that were updated. Isso pode melhorar a eficiência e o desempenho.This can improve efficiency and performance. Entretanto, como a manutenção de informações do controle de alterações aumenta a sobrecarga de armazenamento, essa opção é definida como OFF por padrão.However, because maintaining column tracking information adds some extra storage overhead, this option is set to OFF by default.

Desabilitar o controle de alterações para um banco de dados ou uma tabelaDisable Change Tracking for a Database or Table

É necessário desabilitar o controle de alterações em todas as tabelas com alterações controladas, antes que o controle de alterações seja definido como OFF no banco de dados.Change tracking must first be disabled for all change-tracked tables before change tracking can be set to OFF for the database. Para determinar as tabelas que tenham o controle de alterações habilitadas em um banco de dados, use a exibição do catálogo 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 nenhuma tabela de um banco de dados controlar as alterações, você pode desabilitar o controle de alterações no banco de dados.When no tables in a database track changes, you can disable change tracking for the database. O exemplo a seguir mostra como desabilitar o controle de alterações para um banco de dados usando 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  

O exemplo a seguir mostra como desabilitar o controle de alterações para uma tabela usando 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;  

Consulte TambémSee Also

Propriedades do Banco de Dados (Página Controle de Alterações) Database Properties (ChangeTracking Page)
Opções 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)
Controle de alterações de dados (SQL Server) Track Data Changes (SQL Server)
Sobre o controle de alterações (SQL Server) About Change Tracking (SQL Server)
Trabalhar com dados de alterações (SQL Server) Work with Change Data (SQL Server)
Gerenciar o controle de alterações (SQL Server)Manage Change Tracking (SQL Server)