Cambio del esquema de una tabla temporal con versiones del sistema
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores Azure SQL DatabaseAzure SQL Managed Instance
Use la ALTER TABLE
instrucción para agregar, modificar o quitar una columna.
Ejemplos
Estos son algunos ejemplos que cambian el esquema de la tabla temporal.
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;
Notas importantes
Se requiere el permisoCONTROL en tablas de historial y actuales para cambiar el esquema de tabla temporal.
Durante una
ALTER TABLE
operación, el sistema contiene un bloqueo de esquema en ambas tablas.El cambio de esquema especificado se propaga a la tabla de historial de manera adecuada (según el tipo de cambio).
Agregar varchar(max), nvarchar(max), varbinary(max) o columnas XML con valores predeterminados será una operación de actualización de datos en todas las ediciones de SQL Server.
Si el tamaño de fila después de la adición de columna supera el límite de tamaño de fila, no se pueden agregar columnas nuevas en línea.
Una vez que amplía una tabla con una nueva columna que no es NULL, considere la posibilidad de quitar la restricción predeterminada de la tabla de historial, ya que todas las columnas de esa tabla las rellena el sistema automáticamente.
La opción en línea (
WITH (ONLINE = ON
) no tiene ningún efecto enALTER TABLE ALTER COLUMN
con las tablas temporales con control de versiones del sistema. Alter column no se realiza como en línea, independientemente del valor especificado para la opción ONLINE.Puede usar
ALTER COLUMN
para cambiarIsHidden
la propiedad de las columnas de período.No se puede usar directamente
ALTER
para los siguientes cambios de esquema. Para estos tipos de cambios, establezcaSYSTEM_VERSIONING = OFF
.- Agregar una columna calculada
- Agregar una columna IDENTITY
- Agregar una columna DISPERSA o cambiar la columna existente para que sea DISPERSA cuando la tabla de historial está establecida
DATA_COMPRESSION = PAGE
en oDATA_COMPRESSION = ROW
, que es el valor predeterminado de la tabla de historial. - Agregar un COLUMN_SET
- Agregar una columna ROWGUIDCOL o cambiar una columna existente para que sea ROWGUIDCOL
- Modificar una columna NULL por NOT NULL si la columna contiene valores null en la tabla actual o de historial
En el ejemplo siguiente se muestra cómo cambiar el esquema en el que la configuración SYSTEM_VERSIONING = OFF
sigue siendo necesaria (agregando una columna IDENTITY ). Este ejemplo deshabilita la comprobación de coherencia de datos. Esta comprobación no es necesaria si se realiza el cambio de esquema dentro de una transacción en la que no pueden producirse cambios de datos simultáneos.
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;
Pasos siguientes
- Tablas temporales
- Introducción a las tablas temporales con versión del sistema
- Administración de la retención de datos históricos en las tablas temporales con control de versiones del sistema
- Tablas temporales con control de versiones del sistema con tablas con optimización para memoria
- ALTER TABLE (Transact-SQL)
- Creación de una tabla temporal con control de versiones del sistema
- Modificación de los datos de una tabla temporal con control de versiones del sistema
- Consulta de los datos de una tabla temporal con control de versiones del sistema
- Detención del control de versiones en una tabla temporal con control de versiones del sistema
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de