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

Применимо к: SQL Server 2016 (13.x) и более поздних версий Azure SQL DatabaseУправляемый экземпляр 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 (Transact-SQL).

Дальнейшие действия