Paso de Nvarchar a Varchar en toda la base de datos.

08/04/2006 - 18:41 por José Manuel Blanes Pacheco | Informe spam
Hola grupo:

Tengo una base en producción de 20 GB con casi cien tablas y todas ellas con
muchas columnas de tipo nvarchar, nchar y ntext y ahora la nueva versión de
la aplicación que la explota, una aplicación de GIS, no puede tratar con
columnas de datos de tipo Unicode. Así que debo pasarlas a su
correspondiente tipo de datos con caracteres estandar.

El problema es el elevado número de tablas y sus correspondientes campos que
no puedo, evidentemente cambiar a mano. Además existen objetos dependientes,
tales como vistas, índices, restricciones de integridad referencial y de
clave primaria, procedimientos almacenados, permisos sobre tablas,
etc...

Así pues debo hacerlo automático. He pensado en crearme un script de
generación de una base de datos completa y luego mediante un "buscar y
reeemplazar", sustituir en el script todas las referencias a nvarchar a
varchar. Luego pasar el script sobre una base de datos de prueba y pasar los
datos mediante un DTS de la original a la de prueba.

¿Es esto lo más correcto? ¿Existe alguna otra manera?

Gracias anticipadas por todas vuestras respuestas.
 

Leer las respuestas

#1 DosFlores
09/04/2006 - 07:55 | Informe spam
Puedes crear un script que te haga la modificación en todas las columnas.

Se puede utilizar un cursor para:

1º Hacer un Select en syscolumns de todas las columnas unicode
2º Formas una cadena con la instrucción de modificación de la columna
añadiendo el nombre de la columna y tabla a modificar.
3º Le añades ' >Fichero.sql' a la cadena formada con la instrucción
4º Insertas a un fichero la instrucción con con master.dbo.xp_cmdshell
@tuInstruccion

Tengo un script hecho por algún lado, si lo necesitas te lo puedo pasar.

Un saludo
Oscar Montesinos.

"José Manuel Blanes Pacheco" escribió en el mensaje
news:nIRZf.1829$
Hola grupo:

Tengo una base en producción de 20 GB con casi cien tablas y todas ellas
con muchas columnas de tipo nvarchar, nchar y ntext y ahora la nueva
versión de la aplicación que la explota, una aplicación de GIS, no puede
tratar con columnas de datos de tipo Unicode. Así que debo pasarlas a su
correspondiente tipo de datos con caracteres estandar.

El problema es el elevado número de tablas y sus correspondientes campos
que no puedo, evidentemente cambiar a mano. Además existen objetos
dependientes, tales como vistas, índices, restricciones de integridad
referencial y de clave primaria, procedimientos almacenados, permisos
sobre tablas, etc...

Así pues debo hacerlo automático. He pensado en crearme un script de
generación de una base de datos completa y luego mediante un "buscar y
reeemplazar", sustituir en el script todas las referencias a nvarchar a
varchar. Luego pasar el script sobre una base de datos de prueba y pasar
los datos mediante un DTS de la original a la de prueba.

¿Es esto lo más correcto? ¿Existe alguna otra manera?

Gracias anticipadas por todas vuestras respuestas.

Preguntas similares