2012-05-15 40 views

Respuesta

17

sólo puede utilizar la sintaxis estándar para alterar la tabla:

ALTER TABLE some_table ALTER COLUMN some_column nvarchar(max) 

es probable que desee para reconstruir los índices sin embargo, para asegurarse de que funcionan como se esperaba.

2

Siempre tome una copia de seguridad así que no importa lo que pase, puede volver a cómo estaban las cosas.

Con eso dicho cambio de varchar(max) a nvarchar(max) no debe perder datos.

Nota al margen: es posible que tenga preocupaciones Si estaba cambiando en la otra dirección nvarchar(max) a varchar(max) como el proceso tendría que convertir caracteres extendidos en su caso estaban presentes.

7

Otra opción para minimizar la interrupción (ya que no creo que el ALTER COLUMN ocurrirá en línea), es:

ALTER TABLE dbo.table ADD new_column NVARCHAR(MAX); -- metadata operation 

Ahora se puede actualizar los datos en ondas/lotes/transacciones en lugar de aplicar el cambio a toda la mesa en una transacción larga. Cuando esté satisfecho de que los datos se copian, puede descartar la columna anterior, cambiarle el nombre a la nueva y volver a crear los índices afectados (su columna MAX no puede estar en la clave de ningún índice, pero puede tener inadvertidamente ponerlo en una definición INCLUDE - si ese es el caso, deberías cuestionar eso de todos modos).

Aún querrá reconstruir todos los índices para reclamar el espacio ahora no utilizado (que puede hacer en línea si está utilizando Enterprise Edition).

+0

muy buen punto +1 – RThomas

Cuestiones relacionadas