Verificações de consistência do sistema de tabelas temporais

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Base de Dados SQL do Azure Azure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Com tabelas temporais, o sistema realiza várias verificações de consistência. Estas verificações garantem que o esquema cumpre os requisitos temporais e que os dados são consistentes e permanecem consistentes. A DBCC CHECKCONSTRAINTS declaração também fornece verificações temporais.

Verificações de consistência do sistema

Antes de SYSTEM_VERSIONING ser definido como ON, um conjunto de verificações é executado na tabela de histórico e na tabela atual. Estas verificações enquadram-se nas verificações de esquema e verificações de dados (se a tabela de histórico não estiver vazia). O sistema também realiza uma verificação de consistência em tempo de execução.

Verificação do esquema

Quando cria ou altera uma tabela para se tornar uma tabela temporal, o sistema verifica se estes requisitos são cumpridos:

  1. Os nomes e o número de colunas são os mesmos tanto na tabela atual como na tabela histórica.

  2. Os tipos de dados correspondem para cada coluna entre a tabela atual e a tabela de histórico.

  3. As colunas de período são definidas como NOT NULL.

  4. 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.

  5. Nenhuma coluna IDENTITY é definida na tabela de histórico.

  6. Nenhum gatilho é definido na tabela de histórico.

  7. Nenhuma chave estrangeira é definida na tabela de histórico.

  8. Nenhuma restrição de tabela ou coluna é definida na tabela de histórico. No entanto, os valores de coluna padrão na tabela de histórico são permitidos.

  9. A tabela de histórico não é colocada num grupo de ficheiros só de leitura.

  10. A tabela de histórico não está configurada para controle de alterações ou captura de dados de alterações.

Verificação da consistência dos dados

Antes de SYSTEM_VERSIONING ser definido como ON e como parte de qualquer operação de linguagem de manipulação de dados (DML), o sistema executa a seguinte verificação: ValidTo >= ValidFrom

Quando cria um link para uma tabela de histórico existente, pode optar por realizar uma verificação de consistência de dados. Esta verificação de consistência de dados garante que os registos existentes não se sobrepõem e que todos cumprem os requisitos temporais. A verificação da consistência dos dados é efetuada por predefinição. Realize a verificação de consistência dos dados sempre que os dados entre as tabelas atuais e de histórico possam estar fora de sincronização. Por exemplo, realiza-o quando incorporas uma tabela de histórico existente que já contém dados de histórico.

Advertência

Alterações manuais ao relógio do sistema fazem com que o sistema falhe inesperadamente, porque as verificações de consistência dos dados em tempo de execução que evitam condições de sobreposição (nomeadamente que a hora de fim de um registo não seja inferior à sua hora de início) falham.

Utilizar DBCC CHECKCONSTRAINTS

O comando DBCC CHECKCONSTRAINTS inclui verificações de consistência de dados temporais. Para obter mais informações, consulte DBCC CHECKCONSTRAINTS.