Udostępnij za pośrednictwem


Testy spójności systemu tabel czasowych

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje Azure SQL DatabaseAzure SQL Managed InstanceSQL Database w usłudze Microsoft Fabric

W przypadku tabel czasowych system przeprowadza kilka kontroli spójności, aby upewnić się, że schemat jest zgodny z wymaganiami dotyczącymi czasu, a dane są spójne i pozostają spójne. Ponadto kontrole czasowe są dostępne w instrukcji DBCC CHECKCONSTRAINTS.

Sprawdzanie spójności systemu

Zanim SYSTEM_VERSIONING zostanie ustawione na ON, wykonywany jest zestaw testów na tabeli historii oraz bieżącej tabeli. Te testy są pogrupowane w sprawdzanie schematu i sprawdzanie danych (jeśli tabela historii nie jest pusta). Ponadto system wykonuje również kontrolę spójności środowiska uruchomieniowego.

Sprawdzanie schematu

Podczas tworzenia lub zmieniania tabeli w celu utworzenia tabeli czasowej system sprawdza, czy spełnione są wymagania:

  1. Nazwy i liczba kolumn są takie same zarówno w bieżącej tabeli, jak i tabeli historii.

  2. Typy danych są zgodne dla każdej kolumny między bieżącą tabelą a tabelą historii.

  3. Kolumny okresu są ustawione na NOT NULL.

  4. Bieżąca tabela ma ograniczenie klucza podstawowego, a tabela historii nie ma ograniczenia klucza podstawowego.

  5. W tabeli historii nie zdefiniowano żadnych kolumn IDENTITY.

  6. W tabeli historii nie zdefiniowano żadnych wyzwalaczy.

  7. W tabeli historii nie zdefiniowano kluczy obcych.

  8. W tabeli historii nie zdefiniowano żadnych ograniczeń tabeli ani kolumn. Jednak domyślne wartości kolumn w tabeli historii są dozwolone.

  9. Tabela historii nie jest umieszczana w grupie plików tylko do odczytu.

  10. Tabela historii nie jest skonfigurowana do śledzenia zmian ani przechwytywania danych zmian.

Sprawdzanie spójności danych

Przed ustawieniem SYSTEM_VERSIONING na ON i w ramach dowolnej operacji języka manipulowania danymi (DML) system wykonuje następujące sprawdzanie: ValidTo >= ValidFrom

Podczas tworzenia linku do istniejącej tabeli historii można wybrać przeprowadzenie sprawdzania spójności danych. To sprawdzanie spójności danych zapewnia, że istniejące rekordy nie nakładają się i że wymagania czasowe są spełnione dla każdego rekordu. Sprawdzanie spójności danych jest wartością domyślną. Należy przeprowadzić sprawdzanie spójności danych zawsze, gdy dane między bieżącymi i tabelami historii mogą nie być zsynchronizowane. Na przykład w przypadku dołączania istniejącej tabeli historii wypełnionej danymi historii.

Ostrzeżenie

Ręczne zmiany zegara systemowego spowodują nieoczekiwane niepowodzenie systemu, ponieważ sprawdzanie spójności danych środowiska uruchomieniowego w celu uniknięcia nakładających się warunków (a mianowicie czas zakończenia rekordu nie jest krótszy niż czas rozpoczęcia) kończy się niepowodzeniem.

Użyj polecenia DBCC CHECKCONSTRAINTS

Polecenie DBCC CHECKCONSTRAINTS zawiera kontrole spójności danych czasowych. Aby uzyskać więcej informacji, zobacz DBCC CHECKCONSTRAINTS.