Konsekvenskontroller för temporalt tabellsystem
gäller för: SQL Server 2016 (13.x) och senare versioner
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
Med temporala tabeller utför systemet flera konsekvenskontroller för att säkerställa att schemat uppfyller kraven för tidsmässiga och att data är konsekventa och förblir konsekventa. Dessutom är temporala kontroller tillgängliga i DBCC CHECKCONSTRAINTS
-instruktionen.
Systemkonsekvenskontroller
Innan SYSTEM_VERSIONING
anges till ON
utförs en uppsättning kontroller i historiktabellen och den aktuella tabellen. Dessa kontroller grupperas i schemakontroller och datakontroller (om historiktabellen inte är tom). Dessutom utför systemet även en körningskonsekvenskontroll.
Schemakontroll
När du skapar eller ändrar en tabell för att bli en temporal tabell verifierar systemet att kraven uppfylls:
Namnen och antalet kolumner är desamma i både den aktuella tabellen och historiktabellen.
Datatyperna matchar för varje kolumn mellan den aktuella tabellen och historiktabellen.
Periodkolumnerna är inställda på
NOT NULL
.Den aktuella tabellen har en primärnyckelbegränsning och historiktabellen har ingen primärnyckelbegränsning.
Inga
IDENTITY
kolumner definieras i historiktabellen.Inga utlösare definieras i historiktabellen.
Inga främmande nycklar definieras i historiktabellen.
Inga tabell- eller kolumnbegränsningar definieras i historiktabellen. Standardkolumnvärden i historiktabellen tillåts dock.
Historiktabellen placeras inte i en skrivskyddad filgrupp.
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 datakonsekvenskontroll. Den här datakonsekvenskontrollen säkerställer att befintliga poster inte överlappar varandra och att temporala krav uppfylls för varje enskild post. Standardinställningen är att utföra datakonsekvenskontrollen. Du bör kontrollera datakonsekvensen när data mellan de aktuella tabellerna och historiktabellerna kanske inte är synkroniserade. Till exempel när du införlivar en befintlig historiktabell som fylls med historikdata.
Varning
Manuella ändringar av systemklockan gör att systemet oväntat misslyckas eftersom konsekvenskontrollerna för körningsdata för att förhindra överlappningsvillkor (dvs. att sluttiden för en post inte är mindre än starttiden) misslyckas.
Använd DBCC CHECKCONSTRAINTS
Kommandot DBCC CHECKCONSTRAINTS
innehåller kontroller av temporal datakonsekvens. Mer information finns i DBCC CHECKCONSTRAINTS.
Relaterat innehåll
- temporala tabeller
- Kom igång med systemversionsbaserade tidstabeller
- Partition med temporala tabeller
- överväganden och begränsningar för tidstabeller
- Temporal tabellsäkerhet
- Hantera kvarhållning av historiska data i systemversionsbaserade tidstabeller
- systemversionsbaserade tidstabeller med minnesoptimerade tabeller
- vyer och funktioner för temporala tabellmetadata