Konsekvenskontroller för temporalt tabellsystem

Gäller för: SQL Server 2016 (13.x) och senare versioner Azure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Med temporala tabeller utför systemet flera konsistenskontroller. Dessa kontroller säkerställer att schemat uppfyller temporala krav och att datan är konsekvent och förblir konsekvent. Uttalandet DBCC CHECKCONSTRAINTS ger också tidskontroller.

Systemkonsekvenskontroller

Innan SYSTEM_VERSIONING anges till ONutförs en uppsättning kontroller i historiktabellen och den aktuella tabellen. Dessa kontroller faller under schemakontroller och datakontroller (om historiktabellen inte är tom). Systemet utför också en körtidskonsistenskontroll.

Schemakontroll

När du skapar eller ändrar en tabell för att bli en temporal tabell verifierar systemet att dessa krav är uppfyllda:

  1. Namnen och antalet kolumner är desamma i både den aktuella tabellen och historiktabellen.

  2. Datatyperna matchar för varje kolumn mellan den aktuella tabellen och historiktabellen.

  3. Periodkolumnerna är inställda på NOT NULL.

  4. Den aktuella tabellen har en primärnyckelbegränsning och historiktabellen har ingen primärnyckelbegränsning.

  5. Inga IDENTITY kolumner definieras i historiktabellen.

  6. Inga utlösare definieras i historiktabellen.

  7. Inga främmande nycklar definieras i historiktabellen.

  8. Inga tabell- eller kolumnbegränsningar definieras i historiktabellen. Standardkolumnvärden i historiktabellen tillåts dock.

  9. Historiktabellen placeras inte i en skrivskyddad filgrupp.

  10. Historiktabellen är inte konfigurerad för ändringsspårning eller insamling av ändringsdata.

Kontroll av datakonsekvens

Innan SYSTEM_VERSIONING anges till ON och som en del av en DML-åtgärd (datamanipuleringsspråk) utför systemet följande kontroll: ValidTo >= ValidFrom

När du skapar en länk till en befintlig historiktabell kan du välja att utföra en datakonsistenskontroll. Denna datakonsistenskontroll säkerställer att befintliga poster inte överlappar och att varje post uppfyller temporala krav. Datakonsistenskontrollen körs som standard. Utför datakonsistenskontrollen när data mellan nuvarande och historiktabeller kan vara ur synk. Till exempel, gör det när du inkluderar en befintlig historiktabell som redan innehåller historikdata.

Varning

Manuella ändringar i systemklockan orsakar att systemet oväntat misslyckas, eftersom körtidsdatakonsistenskontroller som förhindrar överlappningsförhållanden (nämligen att sluttiden för en post inte är kortare än starttiden) misslyckas.

Använd DBCC CHECKCONSTRAINTS

Kommandot DBCC CHECKCONSTRAINTS innehåller kontroller av temporal datakonsekvens. Mer information finns i DBCC CHECKCONSTRAINTS.