Verifiche di coerenza del sistema della tabella temporaleTemporal Table System Consistency Checks

QUESTO ARGOMENTO SI APPLICA A: sìSQL Server (a partire dalla versione 2016)sìDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Quando si usano le tabelle temporali, il sistema esegue una serie di 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.When using temporal tables, the system performs a number of consistency checks to ensure the schema complies with the requirements for temporal and the data is consistent, and remains consistent. Le verifiche temporali sono anche state aggiunte all'istruzione DBCC CHECKCONSTRAINTS .In addition, temporal checks have been added to the DBCC CHECKCONSTRAINTS statement.

Verifiche di coerenza del sistemaSystem Consistency Checks

Prima di impostare SYSTEM_VERSIONING su ON, viene eseguita una serie di verifiche sulla tabella di cronologia e sulla tabella corrente.Before SYSTEM_VERSIONING is set to ON, a set of checks are performed on the history table and the current table. Queste verifiche sono raggruppate in verifiche dello schema e verifiche dei dati (se la tabella di cronologia non è vuota).These checks are grouped into schema checks and data checks (if history table is not empty). Il sistema esegue inoltre una verifica della coerenza di runtime.In addition, the system also performs a runtime consistency check.

Verifica dello schemaSchema Check

Quando si crea o si modifica una tabella affinché diventi una tabella temporale, il sistema verifica che siano soddisfatti i requisiti seguenti:When creating or alter a table to become a temporal table, the system verifies that requirements are met:

  1. I nomi e il numero di colonne è lo stesso nella tabella corrente e nella tabella di cronologiaThe names and number of columns is the same in both the current table and the history table.

  2. I tipi di dati corrispondono per ogni colonna tra la tabella corrente e la tabella di cronologiaThe datatypes match for each column between the current table and the history table.

  3. Le colonne periodo sono impostate su NOT NULLThe period columns are set to NOT NULL.

  4. La tabella corrente include un vincolo di chiave primaria e la tabella di cronologia non dispone di un vincolo di chiave primariaThe current table has a primary key constraint and the history table does not have a primary key constraint.

  5. Le colonne IDENTITY non sono definite nella tabella di cronologiaNo IDENTITY columns are defined in the history table.

  6. Nella tabella di cronologia non sono definiti triggerNo triggers are defined in the history table.

  7. Nella tabella di cronologia non sono definite chiavi esterneNo foreign keys are defined in the history table.

  8. Nella tabella di cronologia non sono definiti vincoli di tabella o colonna,No table or column constraints are defined on the history table. tuttavia sono consentiti valori predefiniti delle colonne nella tabella di cronologiaHowever, default column values on the history table are permitted.

  9. La tabella di cronologia non è inserita in un filegroup di sola letturaThe history table is not placed in a read-only filegroup.

  10. La tabella di cronologia non è configurata per il rilevamento delle modifiche o per Change Data CaptureThe history table is not configured for change tracking or change data capture.

Verifica della coerenza dei datiData Consistency Check

Prima di impostare SYSTEM_VERSIONING su ON e come parte di un'operazione DML, il sistema esegue la verifica seguente: SysEndTimeSysStartTimeBefore SYSTEM_VERSIONING is set to ON and as part of any DML operation, the system performs the following check: SysEndTimeSysStartTime

Quando si crea un collegamento a una tabella di cronologia esistente, è possibile scegliere di eseguire una verifica della coerenza dei dati.When creating a link to an existing history table, you can choose to perform a data consistency check. 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.This data consistency check ensures that existing records do not overlap and that temporal requirements are fulfilled for every individual record. L'impostazione predefinita prevede l'esecuzione della verifica della coerenza dei dati.Performing the data consistency check is the default. È in genere consigliabile eseguire la 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.Generally, performing the data consistency is recommended whenever the data between the current and history tables may be out of sync, such as when incorporating an existing history table that is populated with history data.

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.Manual changes to the system clock will cause the system to fail unexpectedly because the runtime data consistency checks that are in place to prevent overlap conditions (namely that the end time for a record is not less than its start time) will fail.

DBCC CHECKCONSTRAINTSDBCC CHECKCONSTRAINTS

Il comando DBCC CHECKCONSTRAINTS include verifiche della coerenza dei dati temporali.The DBCC CHECKCONSTRAINTS command includes temporal data consistency checks. Per altre informazioni, vedere DBCC CHECKCONSTRAINTS (Transact-SQL).For more information, see DBCC CHECKCONSTRAINTS (Transact-SQL).

Questo articolo è stato utile?Did this Article Help You? Commenti e suggerimentiWe’re Listening

Quali informazioni si stanno cercando? La ricerca ha restituito i risultati desiderati?What information are you looking for, and did you find it? Microsoft incoraggia gli utenti a inviare i propri commenti per migliorare i contenutiWe’re listening to your feedback to improve the content. Inviare eventuali commenti all'indirizzo sqlfeedback@microsoft.comPlease submit your comments to sqlfeedback@microsoft.com

Vedere ancheSee Also

Tabelle temporali Temporal Tables
Introduzione alle tabelle temporali con controllo delle versioni di sistema Getting Started with System-Versioned Temporal Tables
Partizionamento con le tabelle temporali Partitioning with Temporal Tables
Considerazioni e limitazioni delle tabelle temporali Temporal Table Considerations and Limitations
Sicurezza di una tabella temporale Temporal Table Security
Gestire la conservazione dei dati cronologici nelle tabelle temporali con controllo delle versioni di sistema Manage Retention of Historical Data in System-Versioned Temporal Tables
Tabelle temporali con controllo delle versioni di sistema con tabelle con ottimizzazione per la memoria System-Versioned Temporal Tables with Memory-Optimized Tables
Funzioni e viste per i metadati delle tabelle temporali Temporal Table Metadata Views and Functions