Проверка согласованности системной темпоральной таблицы
Область применения: SQL Server 2016 (13.x) и более поздних версий База данных SQL Azure Управляемый экземпляр SQL Azure
При использовании темпоральных таблиц система выполняет ряд проверок согласованности. Они необходимы для обеспечения соответствия схемы требованиям, чтобы данные в таблице оставались согласованными. Кроме того, в инструкции DBCC CHECKCONSTRAINTS
доступны временные проверки.
Системные проверки согласованности
Прежде чем SYSTEM_VERSIONING
задать значение ON
, набор проверок выполняется в таблице журнала и текущей таблице. Эти проверки подразделяются на проверки схемы и проверки данных (если таблица журнала содержит данные). Кроме того, система выполняет проверку согласованности среды выполнения.
Проверка схемы
При создании или изменении таблицы, которая становится темпоральной, система проверяет соблюдение следующих требований.
Имена и количество столбцов в текущей таблице и таблице журнала совпадают.
Типы данных для каждого столбца в текущей таблице и таблице журнала совпадают.
Для столбцов периода задано значение
NOT NULL
.Текущая таблица содержит ограничение первичного ключа, а таблица журнала не имеет подобного ограничения.
Столбцы в таблице журнала не
IDENTITY
определены.В таблице журнала не определены триггеры.
В таблице журнала не определены внешние ключи.
В таблице журнала не определены ограничения для таблицы или столбцов. Тем не менее в таблице журнала допускается наличие значений столбцов по умолчанию.
Таблица журнала не размещена в файловой группе, доступной только для чтения.
Таблица журнала не настроена на отслеживание изменений или измененных данных.
Проверка согласованности данных
Прежде чем SYSTEM_VERSIONING
установить ON
и как часть любой операции языка обработки данных (DML), система выполняет следующую проверку: ValidTo >= ValidFrom
При создании ссылки на существующую таблицу журнала вы можете указать необходимость проверки согласованности данных. Проверка согласованности данных гарантирует, что существующие записи не пересекаются и что для каждой записи будут выполняться требования темпоральных таблиц. Проверка согласованности данных является проверкой по умолчанию. Проверка согласованности данных должна выполняться всякий раз, когда данные между текущими и таблицами журнала могут быть не синхронизированы. Например, при включении существующей таблицы журнала, заполненной данными журнала.
Предупреждение
Изменение системных часов вручную приведет к неожиданному сбою системы, так как проверка согласованности данных среды выполнения, чтобы предотвратить перекрывающиеся условия (а именно, что время окончания записи не меньше времени начала) завершается ошибкой.
Использование DBCC CHECKCONSTRAINTS
Команда DBCC CHECKCONSTRAINTS
включает проверки согласованности темпоральных данных. Дополнительные сведения см. в разделе DBCC CHECKCONSTRAINTS.
Связанный контент
- Темпоральные таблицы
- Начало работы с системными темпоральными таблицами
- Секционирование с темпоральными таблицами
- Рекомендации и ограничения темпоральной таблицы
- Безопасность темпоральной таблицы
- Управление хранением исторических данных в системных темпоральных таблицах
- Системные темпоральные таблицы с оптимизированными для памяти таблицами
- Представления и функции темпоральных метаданных таблицы