Delen via


Consistentiecontroles voor tijdelijke tabellen

Van toepassing op: SQL Server 2016 (13.x) en latere versies Azure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Met tijdelijke tabellen voert het systeem verschillende consistentiecontroles uit om ervoor te zorgen dat het schema voldoet aan de vereisten voor tijdelijke gegevens en dat de gegevens consistent zijn en consistent blijven. Daarnaast zijn er tijdgebonden controles beschikbaar in de DBCC CHECKCONSTRAINTS instructie.

Systeemconsistentiecontroles

Voordat SYSTEM_VERSIONING is ingesteld op ON, wordt er een set controles uitgevoerd op de geschiedenistabel en de huidige tabel. Deze controles worden gegroepeerd in schemacontroles en gegevenscontroles (als de geschiedenistabel niet leeg is). Daarnaast voert het systeem ook een runtimeconsistentiecontrole uit.

Schemacontrole

Wanneer u een tabel maakt of wijzigt om een tijdelijke tabel te worden, controleert het systeem of aan de vereisten wordt voldaan:

  1. De namen en het aantal kolommen zijn hetzelfde in zowel de huidige tabel als de geschiedenistabel.

  2. De gegevenstypen komen overeen voor elke kolom tussen de huidige tabel en de geschiedenistabel.

  3. De periodekolommen zijn ingesteld op NOT NULL.

  4. De huidige tabel heeft een primaire-sleutelbeperking en de geschiedenistabel heeft geen primaire-sleutelbeperking.

  5. Er zijn geen IDENTITY kolommen gedefinieerd in de geschiedenistabel.

  6. Er worden geen triggers gedefinieerd in de geschiedenistabel.

  7. Er zijn geen vreemde sleutels gedefinieerd in de geschiedenis tabel.

  8. Er zijn geen tabel- of kolombeperkingen gedefinieerd in de geschiedenistabel. Standaardkolomwaarden in de geschiedenistabel zijn echter toegestaan.

  9. De geschiedenistabel wordt niet in een alleen-lezen bestandsgroep geplaatst.

  10. De geschiedenistabel is niet geconfigureerd voor het bijhouden van wijzigingen of het vastleggen van wijzigingengegevens.

Controle van gegevensconsistentie

Voordat SYSTEM_VERSIONING is ingesteld op ON en als onderdeel van een DML-bewerking (Data Manipulat Language), voert het systeem de volgende controle uit: ValidTo >= ValidFrom

Wanneer u een koppeling naar een bestaande geschiedenistabel maakt, kunt u ervoor kiezen om een gegevensconsistentiecontrole uit te voeren. Deze gegevensconsistentiecontrole zorgt ervoor dat bestaande records niet overlappen en dat aan tijdelijke vereisten wordt voldaan voor elke afzonderlijke record. Het uitvoeren van de gegevensconsistentiecontrole is de standaardinstelling. U moet de consistentiecontrole voor gegevens uitvoeren wanneer de gegevens tussen de huidige en geschiedenistabellen mogelijk niet synchroon zijn. Bijvoorbeeld wanneer een bestaande geschiedenistabel wordt opgenomen die is gevuld met geschiedenisgegevens.

Waarschuwing

Handmatige wijzigingen in de systeemklok leiden ertoe dat het systeem onverwacht mislukt, omdat de runtimegegevensconsistentiecontroles om overlappingsvoorwaarden te voorkomen (namelijk dat de eindtijd voor een record niet minder is dan de begintijd) mislukt.

DBCC CHECKCONSTRAINTS gebruiken

De opdracht DBCC CHECKCONSTRAINTS bevat tijdelijke controles voor gegevensconsistentie. Zie DBCC CHECKCONSTRAINTSvoor meer informatie.