Изменение схемы темпоральной таблицы с системным управлением версиями
Применимо к: SQL Server 2016 (13.x) и более поздних версий Azure SQL Database Управляемый экземпляр 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, следует отключить ограничение по умолчанию в прежней таблице, так как система автоматически заполняет ее новыми столбцами.
Параметр "в сети" (
WITH (ONLINE = ON
) не влияет наALTER TABLE ALTER COLUMN
темпоральные таблицы с системным управлением версиями. Столбец ALTER не выполняется в режиме "в сети", независимо от того, какое значение было указано для параметра ONLINE.Вы можете использовать для
ALTER COLUMN
измененияIsHidden
свойства столбцов периода.Вы не можете использовать direct
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 как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по