Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: SQL Server 2016 (13.x) e versioni
successive database SQL di Azure
AzureSQL Managed Instance
SQL 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:
I nomi e il numero di colonne sono gli stessi sia nella tabella attuale che nella tabella storica.
I tipi di dati corrispondono per ogni colonna tra la tabella corrente e la tabella storica.
Le colonne del 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
IDENTITYnon 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 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.
Contenuti correlati
- Tabelle temporali
- Inizia a utilizzare le tabelle temporali versionate dal 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 versionate dal sistema
- Tabelle temporali versionate a livello di sistema con tabelle ottimizzate per la memoria
- Funzioni e viste per i metadati delle tabelle temporali