Verifiche di coerenza del sistema per la tabella temporale

Si applica a: SQL Server 2016 (13.x) e versioni successive database SQL di Azure AzureSQL Managed InstanceSQL database in Microsoft Fabric

Con le tabelle temporali, il sistema esegue diversi controlli di coerenza. Questi controlli garantiscono che lo schema sia conforme ai requisiti temporali e che i dati siano coerenti e rimangano coerenti. La DBCC CHECKCONSTRAINTS dichiarazione fornisce anche controlli temporali.

Verifiche di coerenza del sistema

Prima di impostare SYSTEM_VERSIONING su ON, viene eseguita una serie di verifiche sulla tabella di cronologia e sulla tabella corrente. Questi controlli rientrano nei controlli di schema e nei controlli dati (se la tabella di cronologia non è vuota). Il sistema esegue anche un controllo di coerenza a runtime.

Controllo dello schema

Quando crei o modifichi una tabella per farla diventare una tabella temporale, il sistema verifica che questi requisiti siano soddisfatti:

  1. I nomi e il numero di colonne sono gli stessi sia nella tabella attuale che nella tabella storica.

  2. I tipi di dati corrispondono per ogni colonna tra la tabella corrente e la tabella storica.

  3. Le colonne del periodo sono impostate su NOT NULL.

  4. La tabella corrente include un vincolo di chiave primaria e la tabella di cronologia non dispone di un vincolo di chiave primaria.

  5. Le colonne IDENTITY non sono definite nella tabella di cronologia.

  6. Nella tabella di cronologia non sono definiti trigger

  7. Nella tabella di cronologia non sono definite chiavi esterne.

  8. Nella tabella di cronologia non sono definiti vincoli di tabella o colonna, tuttavia sono consentiti valori predefiniti delle colonne nella tabella di cronologia

  9. La tabella di cronologia non è inserita in un filegroup di sola lettura.

  10. La tabella di cronologia non è configurata per il rilevamento delle modifiche o per Change Data Capture.

Verifica di coerenza dei dati

Prima di impostare SYSTEM_VERSIONING su ON e nell'ambito di qualsiasi operazione Data Manipulation Language (DML), il sistema esegue il seguente controllo: ValidTo >= ValidFrom

Quando crei un link a una tabella della cronologia esistente, puoi scegliere di effettuare un controllo della coerenza dei dati. Questo controllo della coerenza dei dati garantisce che i record esistenti non si sovrappongano e che ogni record rispetti i requisiti temporali. Il controllo di coerenza dei dati viene eseguito di default. Esegui il controllo della coerenza dei dati ogni volta che i dati tra le tabelle attuali e storica potrebbero essere fuori sincrono. Ad esempio, eseguilo quando incorpori una tabella di cronologia esistente che contiene già dati di storia.

Avvertimento

Modifiche manuali al clock di sistema causano un guasto inaspettato del sistema, perché i controlli di coerenza dei dati in tempo reale che impediscono condizioni di sovrapposizione (cioè che il tempo di fine di un record non sia inferiore al suo orario di inizio) falliscono.

Utilizzare DBCC CHECKCONSTRAINTS

Il comando DBCC CHECKCONSTRAINTS include verifiche della coerenza dei dati temporali. Per altre informazioni, si veda DBCC CHECKCONSTRAINTS.