2011-11-16 27 views
20

Necesito cambiar los tipos de datos de columna en una tabla de base de datos de varchar a nvarchar para admitir caracteres chinos (actualmente, los campos varchar que tienen estos caracteres solo muestran signos de interrogación).Cambiar el tipo de datos varchar a nvarchar en la base de datos existente de SQL Server 2005. ¿Cualquier problema?

Sé cómo cambiar los valores, pero quiero ver si es seguro hacerlo. ¿Hay algo que tener en cuenta antes de hacer el cambio? ¡Gracias!

Respuesta

26

Tenga en cuenta que este cambio es una actualización del tamaño de datos, consulte SQL Server table columns under the hood. El cambio agregará una nueva columna NVARCHAR, actualizará cada fila copiando el dta del VARCHAR anterior a la nueva columna NVARCHAR, y luego marcará la columna VARCHAR anterior como descartada. SI la tabla es grande, generará un registro grande, así que prepárate para ello. Después de la actualización, ejecute DBCC CLEANTABLE para reclamar el espacio utilizado por la columna VARCHAR anterior. Si puede pagarlo, mejor ejecute ALTER TABLE ... REBUILD, que no solo recuperará el espacio sino que también eliminará completamente la columna física VARCHAR eliminada. El artículo vinculado al comienzo tiene más detalles.

Puede que esté interesado en habilitar Unicode Compression para su tabla.

7

Asegúrese de que la longitud no sea superior a 4000, ya que el valor máximo para VARCHAR es de 8000, mientras que NVARCHAR es solo de 4 K.

2

La mesa se hará más grande. Cada personaje de la columna ocupará el doble del espacio para almacenar. Puede que no lo note a menos que la mesa sea realmente grande.

Es posible que los procedimientos/vistas/consultas almacenados que funcionan con los datos de la columna deban modificarse para tratar con el nvarchar.

17

Puede hacerlo en campos de clave principal no:

ALTER TABLE [TableName] 
ALTER COLUMN [ColumnName] nvarchar(N) null 

En los campos de clave principal no va a funcionar - que tendrá que volver a crear la tabla

1

presentarán todas las dependencias de esta tabla como se almacena procs, funciones, tablas temporales basadas en esta tabla y variables utilizadas para inserciones/actualizaciones, etc. también pueden necesitar ser actualizadas a NVARCHAR. ¡También verifique si la tabla está en replicación! ¡Eso podría causarte un nuevo conjunto de problemas!

Cuestiones relacionadas