Поделиться через


Проверка согласованности системной темпоральной таблицы

Область применения: SQL Server 2016 (13.x) и более поздних версий База данных SQL Azure Управляемый экземпляр SQL Azure

При использовании темпоральных таблиц система выполняет ряд проверок согласованности. Они необходимы для обеспечения соответствия схемы требованиям, чтобы данные в таблице оставались согласованными. Кроме того, в инструкции DBCC CHECKCONSTRAINTS доступны временные проверки.

Системные проверки согласованности

Прежде чем SYSTEM_VERSIONING задать значение ON, набор проверок выполняется в таблице журнала и текущей таблице. Эти проверки подразделяются на проверки схемы и проверки данных (если таблица журнала содержит данные). Кроме того, система выполняет проверку согласованности среды выполнения.

Проверка схемы

При создании или изменении таблицы, которая становится темпоральной, система проверяет соблюдение следующих требований.

  1. Имена и количество столбцов в текущей таблице и таблице журнала совпадают.

  2. Типы данных для каждого столбца в текущей таблице и таблице журнала совпадают.

  3. Для столбцов периода задано значение NOT NULL.

  4. Текущая таблица содержит ограничение первичного ключа, а таблица журнала не имеет подобного ограничения.

  5. Столбцы в таблице журнала не IDENTITY определены.

  6. В таблице журнала не определены триггеры.

  7. В таблице журнала не определены внешние ключи.

  8. В таблице журнала не определены ограничения для таблицы или столбцов. Тем не менее в таблице журнала допускается наличие значений столбцов по умолчанию.

  9. Таблица журнала не размещена в файловой группе, доступной только для чтения.

  10. Таблица журнала не настроена на отслеживание изменений или измененных данных.

Проверка согласованности данных

Прежде чем SYSTEM_VERSIONING установить ON и как часть любой операции языка обработки данных (DML), система выполняет следующую проверку: ValidTo >= ValidFrom

При создании ссылки на существующую таблицу журнала вы можете указать необходимость проверки согласованности данных. Проверка согласованности данных гарантирует, что существующие записи не пересекаются и что для каждой записи будут выполняться требования темпоральных таблиц. Проверка согласованности данных является проверкой по умолчанию. Проверка согласованности данных должна выполняться всякий раз, когда данные между текущими и таблицами журнала могут быть не синхронизированы. Например, при включении существующей таблицы журнала, заполненной данными журнала.

Предупреждение

Изменение системных часов вручную приведет к неожиданному сбою системы, так как проверка согласованности данных среды выполнения, чтобы предотвратить перекрывающиеся условия (а именно, что время окончания записи не меньше времени начала) завершается ошибкой.

Использование DBCC CHECKCONSTRAINTS

Команда DBCC CHECKCONSTRAINTS включает проверки согласованности темпоральных данных. Дополнительные сведения см. в разделе DBCC CHECKCONSTRAINTS.