Изменение схемы системной темпоральной таблицы
Область применения: SQL Server 2016 (13.x) и более поздних
версий База данных SQL Azure Управляемый экземпляр SQL Azure
Используйте инструкцию ALTER TABLE
для добавления, изменения или удаления столбца.
Примеры
Ниже приведены примеры изменения схемы темпоральной таблицы.
ALTER TABLE dbo.Department
ALTER COLUMN DeptName varchar(100);
ALTER TABLE dbo.Department
ADD WebAddress nvarchar(255) NOT NULL
CONSTRAINT DF_WebAddress DEFAULT 'www.mycompany.com';
ALTER TABLE dbo.Department
ADD TempColumn INT;
GO
ALTER TABLE dbo.Department
DROP COLUMN TempColumn;
/* Setting IsHidden property for period columns.
Use ALTER COLUMN <period_column> DROP HIDDEN to clear IsHidden flag */
ALTER TABLE dbo.Department
ALTER COLUMN ValidFrom ADD HIDDEN;
ALTER TABLE dbo.Department
ALTER COLUMN ValidTo ADD HIDDEN;
Важные замечания
Чтобы изменить схему темпоральной таблицы, требуется разрешениеCONTROL на текущую и прежнюю таблицы.
ALTER TABLE
Во время операции система держит блокировку схемы в обеих таблицах.Указанные изменения схемы распространяются на прежнюю таблицу соответствующим образом (в зависимости от типа изменений).
Добавление varchar(max), nvarchar(max), varbinary(max) или XML-столбцов по умолчанию будет операцией обновления данных во всех выпусках SQL Server.
Если размер строки после добавления столбца превышает ограничение размера строки, новые столбцы нельзя добавлять в режим "в сети".
После добавления в таблицу нового столбца, который не допускает значений NULL, следует отключить ограничение по умолчанию в прежней таблице, так как система автоматически заполняет ее новыми столбцами.
Параметр Online (
WITH (ONLINE = ON
) не влияет наALTER TABLE ALTER COLUMN
системные темпоральные таблицы. Столбец ALTER не выполняется в режиме "в сети", независимо от того, какое значение было указано для параметра ONLINE.Можно использовать
ALTER COLUMN
для измененияIsHidden
свойства для столбцов периода.Вы не можете использовать прямой
ALTER
для следующих изменений схемы. Для этих типов изменений задайтеSYSTEM_VERSIONING = OFF
.- добавление вычисляемого столбца;
- добавление столбца IDENTITY ;
- Добавление столбца SPARSE или изменение существующего столбца, которое должно быть SPARSE, если для таблицы журнала задано
DATA_COMPRESSION = PAGE
значение илиDATA_COMPRESSION = ROW
значение по умолчанию для таблицы журнала. - добавление столбца COLUMN_SET;
- добавление столбца ROWGUIDCOL или изменение существующего столбца на ROWGUIDCOL.
- Изменение столбца NULL на NOT NULL, если столбец содержит значения NULL в текущей или таблице журнала
В следующем примере показано изменение схемы, в которой по-прежнему требуется параметр SYSTEM_VERSIONING = OFF
(добавление столбца IDENTITY ). В этом примере отключена проверка согласованности данных. Эта проверка не требуется, если изменения схемы выполнены в рамках транзакции, так как в течение этого периода не могут произойти другие изменения данных.
BEGIN TRANSACTION
ALTER TABLE [dbo].[CompanyLocation] SET (SYSTEM_VERSIONING = OFF);
ALTER TABLE [CompanyLocation] ADD Cntr INT IDENTITY (1, 1);
ALTER TABLE [dbo].[CompanyLocationHistory] ADD Cntr INT NOT NULL
CONSTRAINT DF_Cntr DEFAULT 0;
ALTER TABLE [dbo].[CompanyLocation] SET
(
SYSTEM_VERSIONING = ON
(HISTORY_TABLE = [dbo].[CompanyLocationHistory])
);
COMMIT;
Следующие шаги
- Темпоральные таблицы
- Приступая к работе c темпоральными таблицами с системным управлением версиями
- Управление хранением данных журнала в темпоральных таблицах с системным управлением версиями
- Темпоральные таблицы с системным управлением версиями и таблицы, оптимизированные для памяти
- Инструкция ALTER TABLE (Transact-SQL)
- Создание темпоральной таблицы с системным управлением версиями
- Изменение данных в темпоральной таблице с системным управлением версиями
- Запрос данных в темпоральной таблице с системным управлением версиями
- Остановка системного управления версиями в темпоральной таблице с системным управлением версиями
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по