Verificações de consistência do sistema de tabela temporal
Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Banco de Dados SQL do AzureInstância Gerenciada de SQL do Azure
Ao usar tabelas temporais, o sistema realiza uma série de verificações de consistência para garantir que o esquema esteja em conformidade com os requisitos de tempo e os dados sejam consistentes e permaneçam consistentes. Além disso, as verificações temporais foram adicionadas à instrução DBCC CHECKCONSTRAINTS
.
Verificações de consistência do sistema
Antes que SYSTEM_VERSIONING seja definido como ON, um conjunto de verificações é executado na tabela de histórico e na tabela atual. Essas verificações são agrupadas em verificações de esquema e verificações de dados (se a tabela de histórico não estiver vazia). Além disso, o sistema também executa uma verificação de consistência do runtime.
Verificação do esquema
Ao criar ou alterar uma tabela para se tornar uma tabela temporal, o sistema verifica se os requisitos foram atendidos:
- Os nomes e o número de colunas é o mesmo na tabela atual e na tabela de histórico.
- Os tipos de dados correspondem a cada coluna entre a tabela atual e a tabela de histórico.
- As colunas de período são definidas como NOT NULL.
- A tabela atual tem uma restrição de chave primária e a tabela de histórico não tem uma restrição de chave primária.
- Nenhuma coluna IDENTITY é definida na tabela de histórico.
- Nenhum gatilho é definido na tabela de histórico.
- Nenhuma chave estrangeira é definida na tabela de histórico.
- Nenhuma restrição de tabela ou coluna é definida na tabela de histórico. No entanto, são permitidos valores de coluna padrão na tabela de histórico.
- A tabela de histórico não é colocada em um grupo de arquivos somente leitura.
- A tabela de histórico não está configurada para controle de alterações ou captura de dados de alterações.
Verificação de consistência de dados
Antes que SYSTEM_VERSIONING seja definido como ON e como parte de qualquer operação DML, o sistema executa a seguinte verificação: ValidTo >= ValidFrom
Ao criar um link para uma tabela de histórico existente, você pode optar por executar uma verificação de consistência de dados. Essa verificação de consistência de dados garante que os registros existentes não se sobreponham e que requisitos temporais sejam cumpridos para cada registro individual. A execução da verificação de consistência dos dados é o padrão. Em geral, a execução da consistência de dados deve ser feita sempre que os dados entre as tabelas atual e de histórico possam estar fora de sincronia, por exemplo, ao incorporar uma tabela de histórico existente que é preenchida usando dados de histórico.
Aviso
Alterações manuais ao relógio do sistema farão com que o sistema falhe inesperadamente porque as verificações de consistência de dados de runtime que estão em vigor para evitar condições de sobreposição (ou seja, que a hora de término de um registro não seja anterior à hora de início) falharão.
DBCC CHECKCONSTRAINTS
O comando DBCC CHECKCONSTRAINTS
inclui verificações de consistência de dados temporais. Para obter mais informações, confira DBCC CHECKCONSTRAINTS (Transact-SQL).
Próximas etapas
- Tabelas temporais
- Introdução a tabelas temporais com controle da versão do sistema
- Particionamento com tabelas temporais
- Considerações e limitações da tabela temporal
- Segurança da tabela temporal
- Gerenciar a retenção de dados históricos em tabelas temporais com controle de versão do sistema
- Tabelas temporais com controle da versão do sistema com tabelas com otimização de memória
- Funções e exibições de metadados de tabela temporal
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários