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:
I nomi e il numero di colonne è lo stesso nella tabella corrente e nella tabella di cronologia
I tipi di dati corrispondono per ogni colonna tra la tabella corrente e la tabella di cronologia
Le colonne periodo sono impostate su
NOT NULL
.La tabella corrente include un vincolo di chiave primaria e la tabella di cronologia non dispone di un vincolo di chiave primaria.
Le colonne
IDENTITY
non sono definite nella tabella di cronologia.Nella tabella di cronologia non sono definiti trigger
Nella tabella di cronologia non sono definite chiavi esterne
Nella tabella di cronologia non sono definiti vincoli di tabella o colonna, tuttavia sono consentiti valori predefiniti delle colonne nella tabella di cronologia
La tabella di cronologia non è inserita in un filegroup di sola lettura.
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.
Contenuto correlato
- Tabelle temporali
- Introduzione alle tabelle temporali con controllo delle versioni di sistema
- Partizioni con tabelle temporali
- Considerazioni e limitazioni delle tabelle temporali
- Sicurezza di una tabella temporale
- Gestire la conservazione dei dati storici nelle tabelle temporali con controllo delle versioni di sistema
- Tabelle temporali con controllo delle versioni di sistema con tabelle ottimizzate per la memoria
- Funzioni e viste per i metadati delle tabelle temporali