Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Azure SQL Managed Instance
Base 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 no armazenamento e no desempenho quando o controle de alterações é usado.
Gerenciar o controle de alterações
As seções a seguir listam modos de exibição, permissões e configurações de catálogo que são relevantes para gerenciar o controle de alterações.
Visualizações do catálogo
Para determinar que tabelas e bases de dados têm o acompanhamento de alterações ativado, utilize as seguintes vistas de catálogo:
Além disso, a vista de catálogo sys.internal_tables lista as tabelas internas que são criadas quando o rastreio de alterações está habilitado para uma tabela de utilizador.
Segurança
Para aceder às informações de acompanhamento de alterações usando as funcionalidades de acompanhamento de alterações, os principais devem ter as seguintes permissões:
SELECTpermissão em pelo menos as colunas de chave primária na tabela com controle de alterações para a tabela 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 registos de monitorização de alterações incluem informações sobre linhas que são eliminadas. Os registos utilizam os valores-chave primários das linhas que são eliminadas. Pode ser concedida a um principal a permissão
SELECTpara uma tabela com controlo de alterações depois de alguns dados sensíveis serem eliminados. Neste caso, não quer que esse principal aceda à informação eliminada usando o rastreio de alterações.A informação de acompanhamento de alterações pode armazenar informações sobre quais colunas são alteradas por operações de atualização. Um principal pode ser privado de permissão para uma coluna que contenha informações sensíveis. No entanto, como há informação disponível para o acompanhamento de alterações, um principal pode determinar que o valor de uma coluna é atualizado, mas o principal não pode determinar o valor dessa coluna.
Compreender a sobrecarga de controle de alterações
Quando ativas o acompanhamento de alterações para uma tabela, isso afeta algumas operações administrativas. A tabela a seguir lista as operações e os efeitos que você deve considerar.
| Funcionamento | Quando o controlo de alterações está ativado |
|---|---|
DROP TABLE |
Todas as informações de controle de alterações da tabela eliminada são removidas. |
ALTER TABLE DROP CONSTRAINT |
Uma tentativa de eliminar a PRIMARY KEY restrição falha. Tens de desativar o rastreamento de alterações antes de poderes eliminar uma PRIMARY KEY restrição. |
ALTER TABLE DROP COLUMN |
Se uma coluna que estás a eliminar faz parte da chave primária, eliminar a coluna não é permitido, independentemente do acompanhamento de alterações. Se a coluna que estás a eliminar não fizer parte da chave primária, a eliminação da coluna é bem-sucedida. No entanto, deve primeiro compreender o efeito em qualquer aplicação que esteja a sincronizar estes dados. 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. Cabe à aplicação processar a coluna removida. |
ALTER TABLE ADD COLUMN |
Se adicionares uma nova coluna à tabela de alterações acompanhadas, a adição da coluna não é registada. Somente as atualizações e alterações feitas na nova coluna são acompanhadas. |
ALTER TABLE ALTER COLUMN |
As alterações no tipo de dados de uma coluna de chave não primária não são registadas. |
ALTER TABLE SWITCH |
A comutação de uma partição falhará se uma ou ambas as tabelas tiverem o controlo de alterações ativado. |
DROP INDEX, or ALTER INDEX DISABLE |
O índice que reforça a chave primária não pode ser eliminado ou desativado. |
TRUNCATE TABLE |
Podes truncar uma tabela que tenha o acompanhamento de alterações ativado. No entanto, as linhas que a operação apaga não são registadas, 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. Esta condição é o mesmo que desativar o acompanhamento de alterações e reativá-lo depois para a tabela. |
A utilização do controlo de alterações acrescenta alguma sobrecarga às operações DML, porque estas armazenam informações de controlo de alterações.
Efeitos no DML
O acompanhamento de alterações está otimizado para minimizar a sobrecarga de desempenho nas operações DML. A sobrecarga incremental de desempenho que vem com o uso de acompanhamento de alterações numa tabela é semelhante à sobrecarga que se 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 interna de acompanhamento de alterações. O efeito desta ação, em relação à operação DML, depende de vários fatores, tais como:
O número de colunas de chave primária
A quantidade de dados alterados na linha da tabela do utilizador
O número de operações realizadas numa transação
O isolamento de snapshots, se utilizado, também afeta o desempenho de todas as operações DML, esteja ou não ativado o acompanhamento de alterações.
Efeitos na armazenagem
Os dados de controle de alterações são armazenados nos seguintes tipos de tabelas internas:
Tabela de alterações internas
Cada tabela de utilizadores que tem o acompanhamento de alterações ativado tem a sua própria tabela de alterações interna.
Tabela de operações internas
A base de dados tem uma tabela interna de transações.
Essas tabelas internas afetam os requisitos de armazenamento das seguintes maneiras:
Para cada alteração em cada linha da tabela de utilizador, o acompanhamento de alterações adiciona uma linha à tabela de alterações interna. Esta 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 ativares o rastreio de colunas, cada coluna alterada requer 4 bytes na tabela de rastreamento.
Para cada transação comprometida, o acompanhamento de alterações adiciona uma linha a uma tabela interna de transações.
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 . Pode obter os nomes das tabelas internas utilizando a vista de catálogo sys.internal_tables, conforme mostrado no exemplo seguinte.
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 mudanças