Verifiche di coerenza del sistema della tabella temporale

Si applica a: SQL Server 2016 (13.x) e versioni successive Database SQL diIstanza 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. Le verifiche temporali sono anche state aggiunte all'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 DML, il sistema esegue il controllo seguente: 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. È in genere 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.

DBCC CHECKCONSTRAINTS

Il comando DBCC CHECKCONSTRAINTS include verifiche della coerenza dei dati temporali. Per altre informazioni, vedere DBCC CHECKCONSTRAINTS (Transact-SQL).

Passaggi successivi