Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Azure SQL Database
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 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 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 registros de controle de alterações incluem informações sobre linhas que foram excluídas. Os registros usam os valores de chave primária das linhas que foram excluídas. Uma parte interessada poderia ter recebido
SELECTpermissão para uma tabela com controle de alterações depois de alguns dados confidenciais terem sido eliminados. Nesse caso, você não gostaria que esse principal tivesse a capacidade de acessar essas informações excluídas usando o controle 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. Pode ser recusada permissão a um agente para uma coluna que contenha informações confidenciais. No entanto, como as informações de controle de alterações estão disponíveis, um principal pode determinar que um valor de coluna foi atualizado, mas o principal não pode determinar o valor da coluna.
Compreender a sobrecarga 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.
| 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. O controle de alterações deve ser desativado antes que uma PRIMARY KEY restrição possa ser descartada. |
ALTER TABLE DROP COLUMN |
Se uma coluna que está a ser eliminada fizer parte da chave primária, a remoção da coluna não é permitida, independentemente do rastreamento de alterações. Se a coluna a ser removida não fizer parte da chave primária, remover a coluna é 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 da aplicação gerir a coluna eliminada. |
ALTER TABLE ADD COLUMN |
Se uma nova coluna for adicionada à tabela com alterações acompanhadas, a adição da coluna não será registada. Somente as atualizações e alterações feitas na nova coluna são acompanhadas. |
ALTER TABLE ALTER COLUMN |
As alterações de 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 impõe a chave primária não pode ser descartado ou desativado. |
TRUNCATE TABLE |
O truncar uma tabela pode ser executado em uma tabela que tenha o controle de alterações habilitado. No entanto, as linhas que são excluídas pela operação 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 é muito antiga e uma reinicialização é necessária. Isso é o mesmo que o controle de alterações ser desativado e, em seguida, reativado 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 nas 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 interna de controle de alterações. O efeito disso 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 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 tem um efeito sobre o desempenho de todas as operações DML, seja o controle de alterações esteja habilitado ou não.
Efeitos na armazenagem
Os dados de controle de alterações são armazenados nos seguintes tipos de tabelas internas:
Tabela de alterações internas
Há uma tabela de alterações interna para cada tabela de usuário que tem o controle de alterações habilitado.
Tabela de operações internas
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 do usuário, uma linha é adicionada à 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. E, se o rastreamento de coluna estiver habilitado, cada coluna alterada exigirá 4 bytes na tabela de controle.
Para cada transação confirmada, uma linha é adicionada a uma tabela de transações interna.
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'
Conteúdo relacionado
- 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)
- Sobre o controle de alterações (SQL Server)
- Trabalhar com dados de mudanças