¿Cambiar el tamaño de una columna bloquea la tabla?

¿Cambiar el tamaño de una columna bloquea la tabla?

¿Qué sucede si cambio una columna de nvarchar(2) a nvarchar(10) o una columna de char(2) a nvarchar(10)? ¿Esto bloquea, reorganiza la mesa o funciona sin ningún impacto o tiempo de inactividad?

Intenté averiguar qué sucede si modifico una columna, pero no encontré nada. Es una tabla grande con una o dos columnas para cambiar. Se trata de un MS SQL Server 2008 R2.

Respuesta1

La forma más sencilla de averiguarlo sería utilizar un entorno de prueba, crear una tabla ficticia y algunos registros ficticios aplican el cambio del que se habla y luego rastrean las acciones a través del generador de perfiles.

O cambie la tabla en la tabla diseñada en SSMS y luego use el botón 'Generar script de cambio'. Cuando cambio mi columna de Char(2) a NVARCHAR(10). El script de generación de cambios produce lo siguiente:

   CREATE TABLE dbo.Tmp_t2
    (
    id int NULL,
    c1 nvarchar(50) NULL,
    c2 nvarchar(2) NULL
    )  ON [PRIMARY]
GO
ALTER TABLE dbo.Tmp_t2 SET (LOCK_ESCALATION = TABLE)
GO
IF EXISTS(SELECT * FROM dbo.t2)
     EXEC('INSERT INTO dbo.Tmp_t2 (id, c1, c2)
        SELECT id, CONVERT(nvarchar(50), c1), c2 FROM dbo.t2 WITH (HOLDLOCK TABLOCKX)')
GO
DROP TABLE dbo.t2
GO
EXECUTE sp_rename N'dbo.Tmp_t2', N't2', 'OBJECT' 
GO
COMMIT

Respuesta2

Si está utilizando los comandos ALTER, creará otra tabla, copiará los datos existentes a la nueva tabla, eliminará la tabla anterior cuando termine y luego cambiará el nombre de la nueva tabla con el nombre de la tabla anterior. No creo que sea una buena práctica hacerlo durante la base de datos en vivo, pero existen métodos para manejar los datos de producción.

http://www.sqlmag.com/article/tsql3/resizing-a-column-in-a-large-table.aspx

Respuesta3

No se puede realizar ninguna otra operación (como insertar, actualizar y eliminar) cuando se modifica el tipo de datos de la columna de la tabla; toda la tabla se bloqueará. Tampoco se puede seleccionar con NOLOCK.

información relacionada