Compartilhar via


Habilitar e desabilitar o controle de alterações (SQL Server)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureBanco de dados SQL no Microsoft Fabric

Este artigo descreve como habilitar e desabilitar o controle de alterações para um banco de dados e uma tabela.

Habilitar o controle de alterações para um banco de dados

Antes de usar o controle de alterações, você deve habilitar o controle de alterações no nível de banco de dados. O exemplo a seguir mostra como habilitar o controle de alterações usando as opções ALTER DATABASE SET.

ALTER DATABASE AdventureWorks2022
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 Studio usando a caixa de diálogo Propriedades do Banco de Dados (Página Controle de Alterações). Se um banco de dados contiver tabelas com otimização de memória, você não poderá habilitar o controle de alterações com o SQL Server Management Studio. Para habilitar, use o T-SQL.

Você pode especificar as opções e CHANGE_RETENTION quando AUTO_CLEANUP habilitar o controle de alterações e alterar os valores a qualquer momento depois que o controle de alterações estiver habilitado.

O valor de retenção determina o período de tempo que o controle de alterações mantém as informações. Informações do controle de alterações anteriores a esse período de tempo são removidas periodicamente. Ao definir esse valor, você deve considerar a frequência com que os aplicativos serão sincronizados com as tabelas no banco de dados. 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. 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. 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.

Você pode usar a opção AUTO_CLEANUP para habilitar ou desabilitar a tarefa de limpeza que remove informações antigas de controle de alterações. Isso pode ser útil quando há um problema temporário que impede a sincronização de aplicativos e o processo de remoção de informações de controle de alterações anteriores ao período de retenção deve ser pausado até que o problema seja resolvido.

Para qualquer banco de dados que use o controle de alterações, lembre-se do seguinte:

  • Para usar o controle de alterações, o nível de compatibilidade do banco de dados deve ser definido como 90 ou mais. Se o nível de compatibilidade de um banco de dados for inferior a 90, você poderá configurar o controle de alterações. No entanto, a função CHANGETABLE, usada para obter informações do controle de alterações, retornará um erro.

  • 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. Por esse motivo, é altamente recomendável que o isolamento de instantâneo seja definido ON para o banco de dados. Para obter mais informações, consulte Trabalho com controle de alterações (SQL Server).

Habilitar o controle de alterações para uma tabela

O controle de alterações deve ser habilitado para cada tabela que você deseja controlar. 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.

O exemplo a seguir mostra como habilitar o controle de alterações para uma tabela usando 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 Studio usando a caixa de diálogo Propriedades do Banco de Dados (Página Controle de Alterações).

Quando a opção TRACK_COLUMNS_UPDATED é definida como ON, o Mecanismo de Banco de Dados do SQL Server armazena informações extras sobre quais colunas foram atualizadas para a tabela interna de controle de alterações. O controle de coluna pode permitir a um aplicativo sincronizar apenas as colunas que foram atualizadas. Isso pode melhorar a eficiência e o desempenho. No entanto, como manter informações de acompanhamento de coluna adiciona alguma sobrecarga de armazenamento extra, essa opção é definida OFF como por padrão.

Desabilitar o controle de alterações de uma tabela ou banco de dados

O controle de alterações deve primeiro ser desabilitado para todas as tabelas controladas por alterações antes que o controle de alterações possa ser definido OFF para o banco de dados. 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 .

O exemplo a seguir mostra como desabilitar o controle de alterações para uma tabela usando ALTER TABLE.

ALTER TABLE Person.Contact
DISABLE CHANGE_TRACKING;

Quando nenhuma tabela de um banco de dados controlar as alterações, você pode desabilitar o controle de alterações no banco de dados. O exemplo a seguir mostra como desabilitar o controle de alterações para um banco de dados usando opções ALTER DATABASE SET.

ALTER DATABASE AdventureWorks2022
SET CHANGE_TRACKING = OFF