Verifiche coerenza del sistema della tabella temporale

Si applica a: SQL Server 2016 (13.x) e versioni successive Database SQL di Azure Istanza gestita di SQL di Azure

Con le tabelle temporali, il sistema esegue molte verifiche di coerenza per assicurarsi che lo schema sia conforme ai requisiti per le tabelle temporali e che i dati siano coerenti e rimangano tali. Inoltre, i controlli temporali sono disponibili nell'istruzione DBCC CHECKCONSTRAINTS.

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. Queste verifiche sono raggruppate in verifiche dello schema e verifiche dei dati (se la tabella di cronologia non è vuota). Il sistema esegue inoltre una verifica della coerenza di runtime.

Verifica dello schema

Quando si crea o si modifica una tabella affinché diventi una tabella temporale, il sistema verifica che siano soddisfatti i requisiti seguenti:

  1. I nomi e il numero di colonne è lo stesso nella tabella corrente e nella tabella di cronologia

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

  3. Le colonne 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 si crea un collegamento a una tabella di cronologia esistente, è possibile scegliere di eseguire una verifica della coerenza dei dati. Questa verifica della coerenza dei dati garantisce che i record esistenti non si sovrappongano e che siano soddisfatti i requisiti temporali per ogni singolo record. L'impostazione predefinita prevede l'esecuzione della verifica della coerenza dei dati. È necessario eseguire il controllo della coerenza dei dati ogni volta che i dati tra le tabelle correnti e di cronologia non sono sincronizzati, ad esempio quando si incorpora una tabella di cronologia esistente popolata con dati cronologici.

Avviso

Le modifiche manuali al clock di sistema causeranno un errore imprevisto del sistema poiché le verifiche della coerenza dei dati di runtime apportate per evitare condizioni di sovrapposizione (ossia l'ora di fine di un record non è inferiore all'ora di inizio) avranno esito negativo.

Utilizzare DBCC CHECKCONSTRAINTS

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