Megosztás a következőn keresztül:


Temporális táblarendszer konzisztencia-ellenőrzései

Vonatkozik a következőkre: SQL Server 2016 (13.x) és későbbi verziók Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

Az időbeli táblák esetében a rendszer számos konzisztencia-ellenőrzést végez annak érdekében, hogy a séma megfeleljen az időbeli és az adatok konzisztens követelményeinek, és konzisztens maradjon. Emellett a DBCC CHECKCONSTRAINTS utasításban időbeli ellenőrzések is elérhetők.

Rendszerkonzisztencia-ellenőrzések

A SYSTEM_VERSIONINGONbeállítása előtt a rendszer ellenőrzéseket hajt végre az előzménytáblában és az aktuális táblában. Ezek az ellenőrzések sémaellenőrzések és adatellenőrzések szerint vannak csoportosítva (ha az előzménytábla nem üres). Emellett a rendszer futásidejű konzisztencia-ellenőrzést is végez.

Séma ellenőrzése

Amikor létrehoz vagy módosít egy táblát, hogy időbeli táblázattá váljon, a rendszer ellenőrzi, hogy teljesülnek-e a követelmények:

  1. Az oszlopok neve és száma megegyezik az aktuális táblában és az előzménytáblában is.

  2. Az adattípusok egyeznek az aktuális tábla és az előzménytábla közötti egyes oszlopokhoz.

  3. Az időszakoszlopok be vannak állítva NOT NULL-ra.

  4. Az aktuális tábla elsődleges kulcskényszerrel rendelkezik, és az előzménytábla nem rendelkezik elsődleges kulcskényszerrel.

  5. Az előzménytáblában nincs IDENTITY oszlop definiálva.

  6. Az előzménytáblában nincsenek triggerek definiálva.

  7. Az előzménytáblában nincsenek megadva idegen kulcsok.

  8. Az előzménytáblában nincsenek tábla- vagy oszlopkorlátozások definiálva. Az előzménytáblában azonban engedélyezettek az alapértelmezett oszlopértékek.

  9. Az előzménytábla nem írásvédett fájlcsoportba kerül.

  10. Az előzménytábla nincs konfigurálva változáskövetésre vagy adatrögzítésre.

Adatkonzisztencia ellenőrzése

Mielőtt SYSTEM_VERSIONING beállításra kerül ON-re, és az adatmanipulációs nyelv (DML) művelet részeként a rendszer a következő ellenőrzést hajtja végre: ValidTo >= ValidFrom

Meglévő előzménytáblára mutató hivatkozás létrehozásakor dönthet úgy, hogy adatkonzisztencia-ellenőrzést végez. Ez az adatkonzisztencia-ellenőrzés biztosítja, hogy a meglévő rekordok ne legyenek átfedésben, és hogy minden egyes rekord esetében teljesülnek az időbeli követelmények. Az adatkonzisztencia-ellenőrzés végrehajtása az alapértelmezett. Az adatkonzisztencia-ellenőrzést akkor kell elvégeznie, ha az aktuális és az előzménytáblák közötti adatok esetleg nem szinkronizálódnak. Ha például olyan meglévő előzménytáblát épít be, amely előzményadatokkal van feltöltve.

Warning

A rendszeróra manuális módosítása miatt a rendszer váratlanul meghibásodik, mert a futtatókörnyezet adatkonzisztencia-ellenőrzései megakadályozzák az átfedési feltételeket (azaz hogy egy rekord befejezési ideje nem kisebb a kezdési időpontnál).

DBCC CHECKCONSTRAINTS használata

A DBCC CHECKCONSTRAINTS parancs időbeli adatkonzisztencia-ellenőrzéseket tartalmaz. További információért lásd: DBCC CHECKCONSTRAINTS.