Среда: SQL Server 2017 Enterprise под управлением Windows Server 2016 Standard
Тестовый пример
Создайте 2 идентичные темпоральные таблицы (отличаются только именем), где 1 таблица имеет HISTORY_RETENTION_PERIOD
значение 1 день. Для другой таблицы установлено значение INFINITE
.
КОД:
CREATE TABLE dbo.TemporalPurgeTestNew
( TemporalPurgeTestNewId int IDENTITY(1,1)
, InsertedDate datetime2(0)
, ModifiedDate datetime2(0)
, UpdateNum int
, CONSTRAINT pk_TemporalPurgeTestNew
PRIMARY KEY (TemporalPurgeTestNewId)
, SysStartTime datetime2 GENERATED ALWAYS AS ROW START NOT NULL
, SysEndTime datetime2 GENERATED ALWAYS AS ROW END NOT NULL
, PERIOD FOR SYSTEM_TIME (SysStartTime,SysEndTime))
WITH (SYSTEM_VERSIONING = ON
( HISTORY_TABLE = dbo.TemporalPurgeTestNewHistory
, DATA_CONSISTENCY_CHECK = ON
, HISTORY_RETENTION_PERIOD = 1 DAY
));
GO
CREATE TABLE dbo.TemporalPurgeTestExistTbl
( TemporalPurgeTestNewId int IDENTITY(1,1)
, InsertedDate datetime2(0)
, ModifiedDate datetime2(0)
, UpdateNum int
, CONSTRAINT pk_TemporalPurgeTestExistTbl
PRIMARY KEY (TemporalPurgeTestNewId)
, SysStartTime datetime2 GENERATED ALWAYS AS ROW START NOT NULL
, SysEndTime datetime2 GENERATED ALWAYS AS ROW END NOT NULL
, PERIOD FOR SYSTEM_TIME (SysStartTime,SysEndTime))
WITH (SYSTEM_VERSIONING = ON
( HISTORY_TABLE = dbo.TemporalPurgeTestExistTblHistory
));
GO
Вставил по 1 записи в каждую таблицу
Создайте задание агента SQL Server, чтобы изменить запись в каждой таблице, и позвольте заданию выполняться в течение 3 дней.
На 3-й день проверьте, что в таблице с периодом хранения 1 день данные за первый день удалены из связанной таблицы истории, а во 2-й таблице истории все еще содержатся данные с первого дня.
Измените 2-ю таблицу, чтобы установить период хранения на 1 день.
КОД:
ALTER TABLE dbo.TemporalPurgeTestExistTbl
SET (SYSTEM_VERSIONING = ON
( HISTORY_TABLE = dbo.TemporalPurgeTestExistTblHistory
, DATA_CONSISTENCY_CHECK = ON
, HISTORY_RETENTION_PERIOD = 1 DAY
));
ОЖИДАЕТСЯ: данные будут удалены из 2-й исторической таблицы таким же образом, как и из 1-й темпоральной таблицы.
ACTUAL: устаревшие данные во 2-й исторической таблице не удаляются в зависимости от набора политик хранения.
Это ожидаемое поведение или я пропустил шаг в очистке данных во второй темпоральной таблице.