Ir a contenido


MENSAJE DE BIENVENIDA Foro vínculado con Twitter, más info aquí.

“El secreto para progresar es empezar por algún lugar. El secreto para empezar por algún lugar es fragmentar tus complejas y abrumadoras tareas de tal manera que queden convertidas en pequeñas tareas que puedas realizar y entonces simplemente comenzar por la primera.” - Mark Twain

Foto

Cambiar tipo de dato CHAR a VarCHAR


  • Please log in to reply
5 replies to this topic

#1 .Miguel

.Miguel

    Nuevo

  • Miembros
  • Pip
  • 5 Mensajes:

Escrito 19 enero 2011 - 19:11

Hola mundo! (es mi primera vez que publico en el foro),
Tengo una duda y no he visto ninguna solución en el foro, la explico a ver si alguien (quizá Alberto ;) ) me da la mejor solución.
Necesito cambiar el tipo de datos de una clave primaria en una tabla de millones de registros ya que en el diseño utilizaron CHAR en lugar de VARCHAR y ahora tengo problemas con claves externas, el problema lo tengo que al intentar eliminar la clave primaria, me da "Time out" (no tiene ningún indice excepto el creado por defecto por la clave primaria).
¿Cual sería el mejor proceso para realizar este cambio?

Gracias y un saludo,

#2 Alberto Dominguez

Alberto Dominguez

    Gurú

  • Administradores
  • 1.059 Mensajes:
  • LocationMadrid

Escrito 19 enero 2011 - 21:29

¿Hay Foreign Keys apuntando a la PK de esa tabla? En caso afirmativo, ¿Cuántas?...
Saludos,

Alberto Dominguez

Enterprise Architect y Trainer
MCT, MCPD, MCITP, MCITP Dynamics, MCSE, MCSA, MCTS, MCP...
ITIL V3 Foundation Qualification in IT Service Management
Imagen enviadaPerfil Profesional Imagen enviadaTwitter
Imagen enviadaImagen enviadaImagen enviadaImagen enviada

#3 .Miguel

.Miguel

    Nuevo

  • Miembros
  • Pip
  • 5 Mensajes:

Escrito 20 enero 2011 - 00:07

Si, habrá unas 5 tablas que le apuntan con FK. La opción que veo viable es:
Eliminar claves externas.
Eliminar clave primaria.
Modificar con
ALTER TABLE TABLA_X
ALTER COLUMN COMUN_X VARCHAR(X) NOT NULL
Y VOLVER A CREAR LA PK Y FK

#4 Alberto Dominguez

Alberto Dominguez

    Gurú

  • Administradores
  • 1.059 Mensajes:
  • LocationMadrid

Escrito 20 enero 2011 - 07:50

Si esa es una posible vía...
Si quieres también puedes hacerte una copia de la tabla antes por si acaso:

SELECT * INTO AdventureWorks2008.person.person3 
FROM AdventureWorks2008.person.person

En cuanto tenga un ratejo te miro a ver si se me ocurre alguna otra alternativa...
Saludos,

Alberto Dominguez

Enterprise Architect y Trainer
MCT, MCPD, MCITP, MCITP Dynamics, MCSE, MCSA, MCTS, MCP...
ITIL V3 Foundation Qualification in IT Service Management
Imagen enviadaPerfil Profesional Imagen enviadaTwitter
Imagen enviadaImagen enviadaImagen enviadaImagen enviada

#5 .Miguel

.Miguel

    Nuevo

  • Miembros
  • Pip
  • 5 Mensajes:

Escrito 20 enero 2011 - 10:06

Gracias Alberto, por cierto, ¿si hago un Snapshot de la base de datos, la podría utilizar para recuperar el estado anterior en caso de fallo con todas las FKs, la PK y todos los datos dañados desde el Snapshot hasta la modificación? (Te digo Snapshot ya que pienso que sería la forma mas rápida de recuperación)

Gracias de nuevo y un saludo,
Miguel.

#6 Alberto Dominguez

Alberto Dominguez

    Gurú

  • Administradores
  • 1.059 Mensajes:
  • LocationMadrid

Escrito 20 enero 2011 - 10:19

Si, aquí tienes info de como hacer la instantanea y luego de como restaurar la base de datos en caso de necesitarlo:

http://www.hola-mund...-crear-snapshot
Saludos,

Alberto Dominguez

Enterprise Architect y Trainer
MCT, MCPD, MCITP, MCITP Dynamics, MCSE, MCSA, MCTS, MCP...
ITIL V3 Foundation Qualification in IT Service Management
Imagen enviadaPerfil Profesional Imagen enviadaTwitter
Imagen enviadaImagen enviadaImagen enviadaImagen enviada




0 usuarios están leyendo este tema

0 miembro/s, 0 invitado/s, 0 usuario/s anónimo/s