Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico descreve como gerenciar o controle de alterações. Ele também descreve como configurar a segurança e determinar os efeitos no armazenamento e no desempenho quando o controle de alterações é usado.
Gerenciando o controle de alterações
As seções a seguir listam exibições de catálogo, permissões e configurações relevantes para gerenciar o controle de alterações.
Visualizações de Catálogo
Para determinar quais tabelas e bancos de dados têm o controle de alterações habilitado, você pode usar as seguintes exibições de catálogo:
Além disso, a exibição do catálogo sys.internal_tables lista as tabelas internas que são criadas quando o controle de alterações está habilitado para uma tabela de usuário.
Segurança
Para acessar as informações de controle de alterações usando as funções de controle de alterações, o titular deve ter as seguintes permissões:
Permissão SELECT em pelo menos as colunas de chave primária na tabela com rastreamento de alterações da tabela que está sendo consultada.
EXIBA a permissão CONTROLE DE ALTERAÇÕES na tabela para a qual as alterações estão sendo obtidas. A permissão VIEW CHANGE TRACKING é necessária pelos seguintes motivos:
Os registros de controle de alterações incluem informações sobre linhas que foram excluídas, especificamente os valores de chave primária das linhas que foram excluídas. Um usuário poderia ter recebido permissão SELECT para uma tabela controlada por alterações depois que alguns dados confidenciais foram excluídos. Nesse caso, você não gostaria que esse principal pudesse acessar essas informações excluídas usando rastreamento de alterações.
As informações de controle de alterações podem armazenar informações sobre quais colunas foram alteradas por operações de atualização. Um principal pode não ter permissão para acessar uma coluna que contém informações confidenciais. No entanto, como as informações de controle de alterações estão disponíveis, uma autoridade pode determinar que um valor de coluna foi atualizado, mas a autoridade não consegue saber o valor da coluna.
Compreendendo o Custo de Controle de Alterações
Quando o controle de alterações está habilitado para uma tabela, algumas operações de administração são afetadas. A tabela a seguir lista as operações e os efeitos que você deve considerar.
| Operação | Quando o controle de alterações está habilitado |
|---|---|
| DROP TABLE | Todas as informações de controle de alterações da tabela descartada são removidas. |
| ALTER TABLE REMOVER RESTRIÇÃO | Uma tentativa de remover a restrição PRIMARY KEY falhará. O controle de alterações deve ser desabilitado antes que uma restrição PRIMARY KEY possa ser descartada. |
| ALTER TABLE DROP COLUMN | Se uma coluna que está sendo descartada fizer parte da chave primária, a remoção da coluna não será permitida, independentemente do controle de alterações. Se a coluna que está sendo descartada não fizer parte da chave primária, a exclusão da coluna será bem-sucedida. No entanto, o efeito em qualquer aplicativo que esteja sincronizando esses dados deve ser entendido primeiro. Se o controle de alterações de coluna estiver habilitado para a tabela, a coluna descartada ainda poderá ser retornada como parte das informações de controle de alterações. É responsabilidade do aplicativo lidar com a coluna descartada. |
| ALTERAR TABELA ADICIONAR COLUNA | Se uma nova coluna for adicionada a uma tabela acompanhada por alterações, a adição da coluna não será acompanhada. Somente as atualizações e alterações na nova coluna são acompanhadas. |
| ALTER TABELA ALTERAR COLUNA | As alterações de tipo de dados de colunas de chave não primária não são controladas. |
| ALTER TABLE SWITCH | A alteração de uma partição falhará se uma ou ambas as tabelas tiverem o controle de alterações habilitado. |
| Os comandos DROP INDEX ou ALTER INDEX DISABLE | O índice que impõe a chave primária não pode ser descartado ou desabilitado. |
| TRUNCAR TABELA | O truncamento de uma tabela pode ser executado em uma tabela que tem o controle de alterações habilitado. No entanto, as linhas excluídas pela operação não são monitoradas e a versão mínima válida é atualizada. Quando um aplicativo verifica sua versão, a verificação indica que a versão é muito antiga e uma reinicialização é necessária. Isso é o mesmo que o controle de alterações ser desabilitado e, em seguida, reabilitado para a tabela. |
O uso do controle de alterações adiciona alguma sobrecarga às operações DML devido às informações de controle de alterações que estão sendo armazenadas como parte da operação.
Efeitos no DML
O controle de alterações foi otimizado para minimizar a sobrecarga de desempenho em operações DML. A sobrecarga de desempenho incremental associada ao uso do controle de alterações em uma tabela é semelhante à sobrecarga incorrida quando um índice é criado para uma tabela e precisa ser mantido.
Para cada linha alterada por uma operação DML, uma linha é adicionada à tabela de controle de alterações interna. O efeito disso em relação à operação DML depende de vários fatores, como o seguinte:
O número de colunas de chave primária
A quantidade de dados que está sendo alterada na linha da tabela do usuário
O número de operações que estão sendo executadas em uma transação
O isolamento de instantâneo, se usado, também afeta o desempenho das operações DML, independentemente de o controle de alterações estar habilitado ou não.
Efeitos no armazenamento
Os dados de controle de alterações são armazenados nos seguintes tipos de tabelas internas:
Tabela de alteração interna
Há uma tabela de alterações interna para cada tabela de usuário que tem o controle de alterações habilitado.
Tabela de transações interna
Há uma tabela de transações interna para o banco de dados.
Essas tabelas internas afetam os requisitos de armazenamento das seguintes maneiras:
Para cada alteração em cada linha na tabela de usuário, uma linha é adicionada à tabela de alterações interna. Essa linha tem uma pequena sobrecarga fixa mais uma sobrecarga variável igual ao tamanho das colunas de chave primária. A linha pode conter informações de contexto opcionais definidas por um aplicativo. E, se o acompanhamento de colunas estiver habilitado, cada coluna alterada exigirá 4 bytes na tabela de acompanhamento.
Para cada transação confirmada, uma linha é adicionada a uma tabela de transações interna.
Assim como acontece com outras tabelas internas, você pode determinar o espaço usado para as tabelas de controle de alterações usando o procedimento armazenado sp_spaceused . Os nomes das tabelas internas podem ser obtidos usando a exibição de catálogo sys.internal_tables, conforme mostrado no exemplo a seguir.
sp_spaceused 'sys.change_tracking_309576141'
sp_spaceused 'sys.syscommittab'
Consulte Também
Rastrear alterações de dados (SQL Server)
ALTERAR TABELA (Transact-SQL)
Propriedades do banco de dados (página ChangeTracking)
Opções ALTER DATABASE SET (Transact-SQL)
sys.change_tracking_databases (Transact-SQL)
sys.change_tracking_tables (Transact-SQL)
Rastrear alterações de dados (SQL Server)
Sobre o controle de alterações (SQL Server)
Trabalhar com Dados de Mudança (SQL Server)