Sdílet prostřednictvím


Kontroly konzistence systému dočasných tabulek

platí pro: SQL Server 2016 (13.x) a novější verze Azure SQL DatabaseAzure SQL Managed InstanceSQL Database v Microsoft Fabric

V dočasných tabulkách systém provádí několik kontrol konzistence, aby se zajistilo, že schéma splňuje požadavky na dočasné a data jsou konzistentní a zůstávají konzistentní. Kromě toho jsou časové kontroly k dispozici v příkazu DBCC CHECKCONSTRAINTS.

Kontroly konzistence systému

Před nastavením SYSTEM_VERSIONING na ONse provede sada kontrol v tabulce historie a aktuální tabulce. Tyto kontroly jsou seskupené do kontrol schématu a kontrol dat (pokud tabulka historie není prázdná). Kromě toho systém také provádí kontrolu konzistence za běhu.

Kontrola schématu

Při vytváření nebo změně tabulky, aby se stala dočasnou tabulkou, systém ověří splnění požadavků:

  1. Názvy a počet sloupců jsou stejné jak v aktuální tabulce, tak v tabulce historie.

  2. Datové typy se shodují pro každý sloupec mezi aktuální tabulkou a tabulkou historie.

  3. Sloupce období jsou nastaveny na NOT NULL.

  4. Aktuální tabulka má omezení primárního klíče a tabulka historie nemá omezení primárního klíče.

  5. V tabulce historie nejsou definovány žádné IDENTITY sloupce.

  6. V tabulce historie nejsou definovány žádné aktivační události.

  7. V tabulce historie nejsou definovány žádné cizí klíče.

  8. V tabulce historie nejsou definována žádná omezení tabulky nebo sloupce. Výchozí hodnoty sloupců v tabulce historie jsou však povolené.

  9. Tabulka historie se neumisťuje do skupiny souborů jen pro čtení.

  10. Tabulka historie není nakonfigurovaná pro sledování změn nebo zachytávání dat změn.

Kontrola konzistence dat

Před nastavením SYSTEM_VERSIONING na ON a v rámci jakékoli operace jazyka DML (Data Manipulat Language) systém provede následující kontrolu: ValidTo >= ValidFrom

Při vytváření odkazu na existující tabulku historie můžete provést kontrolu konzistence dat. Tato kontrola konzistence dat zajišťuje, že se existující záznamy nepřekrývají a že jsou splněny dočasné požadavky pro každý jednotlivý záznam. Provedení kontroly konzistence dat je výchozí. Kontrolu konzistence dat byste měli provést vždy, když se data mezi aktuálními tabulkami a tabulkami historie nesynchronizují. Například při začlenění existující tabulky historie, která je naplněna daty historie.

Varování

Ruční změny systémových hodin způsobí neočekávaně selhání systému, protože kontroly konzistence dat za běhu brání překrývajícím se podmínkám (konkrétně to, že čas ukončení záznamu není menší než čas spuštění) selže.

Použití KONTROLNÍCH OMEZENÍ DBCC

Příkaz DBCC CHECKCONSTRAINTS zahrnuje dočasné kontroly konzistence dat. Další informace naleznete v tématu DBCC CHECKCONSTRAINTS.