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.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Banco de dados SQL no Microsoft Fabric
Este artigo descreve como gerenciar o controle de alterações. Ele também descreve como configurar a segurança e determinar os efeitos sobre o armazenamento e o desempenho quando você usa o controle de alterações.
Gerenciar o controle de alterações
As próximas seções listam exibições de catálogo, permissões e configurações relevantes para o gerenciamento do controle de alterações.
Visualizações do catálogo
Para determinar quais tabelas e bancos de dados têm o controle de alterações habilitado, use as seguintes exibições de catálogo:
Além disso, o modo de exibição do catálogo sys.internal_tables lista as tabelas internas que são criadas quando o rastreamento de alterações está habilitado para uma tabela de usuário.
Segurança
Para acessar informações do controle de alterações usando as funções de controle de alterações, o principal deve ter as seguintes permissões:
SELECTpermissão em pelo menos as colunas de chave primária da tabela com controle de alterações que está sendo consultada.VIEW CHANGE TRACKINGpermissão na tabela para a qual as alterações estão sendo obtidas. AVIEW CHANGE TRACKINGpermissão é necessária pelos seguintes motivos:Os registros de controle de alterações incluem informações sobre linhas excluídas. Os registros usam os valores de chave primária das linhas que são excluídas. Uma entidade de segurança pode ter
SELECTpermissão concedida para uma tabela com controle de alterações depois que alguns dados sensíveis forem excluídos. Nesse caso, você não deseja que esse principal acesse as informações excluídas por meio do acompanhamento de alterações.As informações de controle de alterações podem armazenar informações sobre quais colunas são alteradas por operações de atualização. Um principal pode ter o acesso negado a uma coluna que contém informações sensíveis. No entanto, como as informações de rastreamento de alterações estão disponíveis, um principal pode determinar que o valor de uma coluna foi atualizado, mas não pode determinar o valor da coluna.
Entender a sobrecarga de controle de alterações
Quando você habilita o controle de alterações para uma tabela, ele afeta algumas operações de administração. 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 rastreamento de alterações da tabela excluída são removidas. |
ALTER TABLE DROP CONSTRAINT |
Uma tentativa de remover a PRIMARY KEY restrição falha. Você deve desabilitar o controle de alterações antes de remover uma PRIMARY KEY restrição. |
ALTER TABLE DROP COLUMN |
Se uma coluna que você está excluindo fizer parte da chave primária, não será permitido excluir a coluna, independentemente do rastreamento de alterações. Se a coluna que você está excluindo não fizer parte da chave primária, a exclusão da coluna será bem-sucedida. No entanto, primeiro você deve entender o efeito em qualquer aplicativo que esteja sincronizando esses dados. Se o rastreamento de alterações de coluna estiver habilitado para a tabela, a coluna removida ainda poderá ser retornada como parte das informações de rastreamento de alterações. Cabe ao aplicativo tratar a coluna removida. |
ALTER TABLE ADD COLUMN |
Se você adicionar uma nova coluna à tabela com controle de alterações, a adição da coluna não é rastreada. Somente as atualizações e alterações feitas na nova coluna são rastreadas. |
ALTER TABLE ALTER COLUMN |
As alterações no tipo de dados de uma coluna que não é chave primária não são rastreadas. |
ALTER TABLE SWITCH |
A alternância de uma partição falhará se uma ou ambas as tabelas tiverem o controle de alterações habilitado. |
DROP INDEX, or ALTER INDEX DISABLE |
O índice que impõe a chave primária não pode ser descartado ou desabilitado. |
TRUNCATE TABLE |
Você pode truncar uma tabela com o controle de alterações habilitado. No entanto, as linhas que a operação exclui não são rastreadas, e a versão mínima válida é atualizada. Quando um aplicativo verifica sua versão, a verificação indica que a versão está desatualizada e que é necessária uma reinicialização. Essa condição é a mesma que desabilitar o controle de alterações e depois habilitá-lo novamente para a tabela. |
O uso do controle de alterações adiciona alguma sobrecarga às operações DML porque a operação armazena informações de controle de alterações.
Efeitos na DML
O controle de alterações é otimizado para minimizar a sobrecarga de desempenho em operações DML. A sobrecarga de desempenho incremental que vem com o uso do controle de alterações em uma tabela é semelhante à sobrecarga que você encontra ao criar e manter um índice para uma tabela.
Para cada linha que uma operação DML altera, o sistema adiciona uma linha à tabela de controle de alterações interna. O efeito dessa ação, em relação à operação DML, depende de vários fatores, como:
O número de colunas de chave primária
A quantidade de dados alterados em uma linha da tabela de usuário
O número de operações executadas em uma transação
O isolamento de instantâneos, se usado, também afeta o desempenho de todas as operações DML, independentemente de o controle de alterações estar habilitado ou não.
Efeitos no armazenamento
Os dados do controle de alterações são armazenados nos seguintes tipos de tabelas internas:
Tabela de alteração interna
Cada tabela de usuário que tem o controle de alterações habilitado obtém sua própria tabela de alterações interna.
Tabela de transação interna
O banco de dados tem uma tabela de transações interna.
Essas tabelas internas afetam os requisitos de armazenamento das seguintes maneiras:
Para cada alteração em cada linha na tabela de usuário, o controle de alterações adiciona uma linha à 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. Se você habilitar o acompanhamento de colunas, cada coluna alterada exigirá 4 bytes na tabela de acompanhamento.
Para cada transação confirmada, o controle de alterações adiciona uma linha a uma tabela de transações interna.
Assim como ocorre em outras tabelas internas, você pode determinar o espaço usado para as tabelas de controle de alterações usando o procedimento armazenado sp_spaceused . Você pode obter os nomes das tabelas internas 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'
Conteúdo relacionado
- Rastrear alterações de dados (SQL Server)
- ALTER TABLE (Transact-SQL)
- Propriedades do banco de dados (página ChangeTracking)
- ALTER DATABASE SET opções (Transact-SQL)
- sys.change_tracking_databases (Transact-SQL)
- sys.change_tracking_tables (Transact-SQL)
- Sobre o controle de alterações (SQL Server)
- Trabalhar com dados de alterações