Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Относится к: SQL Server 2016 (13.x) и более поздние версии
База данных SQL Azure
Управляемый экземпляр SQL Azure
SQL Database в Microsoft Fabric
Возможно, вы захотите прекратить управление версиями в темпоральной таблице либо временно, либо навсегда. Это можно сделать, установив условие SYSTEM_VERSIONING на OFF.
Установить SYSTEM_VERSIONING = OFF
Прекратите версионирование системы, если хотите выполнять конкретные операции по обслуживанию временной таблицы или вам больше не нужна версия. Эта операция даёт вам две независимые таблицы:
- текущую таблицу с определением периода;
- таблица истории как обычная таблица.
Remarks
Таблица истории перестает записывать обновления во время SYSTEM_VERSIONING = OFF.
При установке SYSTEM_VERSIONING = OFF или удалении SYSTEM_TIME периода не происходит потери данных в темпоральной таблице.
Когда вы задаёте SYSTEM_VERSIONING = OFF и не удаляете период SYSTEM_TIME, система продолжает обновлять столбцы периода для каждой операции вставки и обновления. Элементы, удаленные из текущей таблицы, не подлежат восстановлению.
Для удаления столбцов периода необходимо сначала отказаться от SYSTEM_TIME периода. Чтобы удалить столбцы периода, используйте ALTER TABLE <table> DROP <column>;. Дополнительные сведения см. в разделе "Изменение схемы системной темпоральной таблицы".
При установке SYSTEM_VERSIONING = OFFвсе пользователи с достаточными разрешениями могут изменять схему и содержимое таблицы журнала или даже окончательно удалять таблицу журнала.
Нельзя установить SYSTEM_VERSIONING = OFF, если у вас есть другие объекты, созданные с помощью SCHEMABINDING, которые используют временные расширения запросов, например ссылаются на SYSTEM_TIME. Это ограничение предотвращает сбой этих объектов при установке SYSTEM_VERSIONING = OFF.
Окончательное удаление SYSTEM_VERSIONING
Этот пример навсегда удаляет SYSTEM_VERSIONING и удаляет столбцы с периодами. Удалять столбцы периода необязательно.
ALTER TABLE dbo.Department
SET (SYSTEM_VERSIONING = OFF);
При необходимости удалите точку, чтобы преобразовать временную таблицу обратно в невременную.
ALTER TABLE dbo.Department
DROP PERIOD FOR SYSTEM_TIME;
Временное удаление SYSTEM_VERSIONING
Следующие операции требуют установки системного версионирования на :OFF
- Удаление ненужных данных из журнала (
DELETEилиTRUNCATE) - Удаление данных из текущей таблицы без версионизации (
DELETE,TRUNCATE) - Удаление раздела
SWITCH OUTиз текущей таблицы - Разделите
SWITCH INв таблицу истории
В этом примере временно останавливают SYSTEM_VERSIONING, чтобы позволить выполнение определенных операций обслуживания. Если вы временно остановите управление версиями в качестве необходимых условий для обслуживания таблиц, настоятельно рекомендуется сделать это изменение внутри транзакции, чтобы обеспечить согласованность данных.
Когда вы снова включаете системное управление версиями, укажите аргумент HISTORY_TABLE. Если нет, система создаёт новую таблицу истории и связывает её с текущей. Оригинальная таблица истории может существовать как обычная, но больше не связана с текущей.
BEGIN TRANSACTION;
ALTER TABLE dbo.Department
SET (SYSTEM_VERSIONING = OFF);
TRUNCATE TABLE [History].[DepartmentHistory]
WITH ( PARTITIONS (1, 2) );
ALTER TABLE dbo.Department
SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = History.DepartmentHistory));
COMMIT TRANSACTION;
Связанные материалы
- Темпоральные таблицы
- Приступите к изучению системных версионных темпоральных таблиц
- Управление хранением исторических данных в системных темпоральных таблицах
- Системно-версионированные темпоральные таблицы с таблицами, оптимизированными для памяти
- Создание системной темпоральной таблицы
- Изменение данных в системной темпоральной таблице
- Запрос данных в системной темпоральной таблице
- Изменение схемы системной темпоральной таблицы