Agregar columna en tabla pesada

04/02/2004 - 04:23 por Gustavo Morales | Informe spam
En una tabla con varios millones de registros necesito agregar algunos
campos y quitar otros.
Existe un modo menos agobiante que el normal y que copia datos, borra tabla,
crea tabla, copia datos.
(Mas índices)

Gracias

Preguntas similare

Leer las respuestas

#6 Gustavo Morales
04/02/2004 - 06:18 | Informe spam
Via AC si se comporta de ese modo y me parece que via TSQL tambien

"Juan Carlos Leguizamón" escribió
en el mensaje news:
Pos creo que dejare este tema a alguno de los gurus del grupo, aunque creo
que estas haciendo el "alter" por enterprise manager y no por el query
analizer, ¿o no?

"Gustavo Morales" escribió en el mensaje
news:
> Si, el asunto es el tiempo que toma esa operacion. Cuando haces un Alter
> Table, SQL copia la data a una tabla temporal, copia la estructura de la
> tabla e incluso los indices y los constraints para poder regenerarlos
luego.
> Despues borra la tabla y genera nuevamente la tabla con la nueva
estructura.
> Luego genera los indices y los constraints y al final devuelve la data


de
la
> temporal a la nueva tabla. Mucho viaje no?
>
> He conseguido (creo) ahorrarme un viaje haciendo todo manual.
> Genero el script de la tabla, indices y constraints. Lo modifico como
quiero
> que quede y le doy un nuevo nombre a esa tabla. Ejecuto el script y


cargo
la
> data de la tabla antigua a la nueva (puedo usar para esto el DTS) y


luego
> borro la tabla original y renombro la nueva. Creo que es un viaje menos.
>
> "Juan Carlos Leguizamón"


escribió
> en el mensaje news:
> > Hola, no se si no entendi bien la pregunta, pero que no se pude usar


un
> > ALTER TABLE ADD campo tipodato o un ALTER TABLE DROP COLUMN campo?
> >
> > "Gustavo Morales" escribió en el mensaje
> > news:%
> > > En una tabla con varios millones de registros necesito agregar


algunos
> > > campos y quitar otros.
> > > Existe un modo menos agobiante que el normal y que copia datos,


borra
> > tabla,
> > > crea tabla, copia datos.
> > > (Mas índices)
> > >
> > > Gracias
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#7 Adrian D. Garcia
04/02/2004 - 09:36 | Informe spam
Lamentablemente no. Por eso mismo es fundamental planear todo este tipo de
cambios antes de que existan datos en las tablas, aunque muchas veces se que
es imposible.

Saludos
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Gustavo Morales" wrote in message
news:%
En una tabla con varios millones de registros necesito agregar algunos
campos y quitar otros.
Existe un modo menos agobiante que el normal y que copia datos, borra


tabla,
crea tabla, copia datos.
(Mas índices)

Gracias


Respuesta Responder a este mensaje
#8 Maximiliano D. A.
04/02/2004 - 13:16 | Informe spam
hola, haciendo el alter cuanto tarda? porque yo tambien tengo una tabla de
unos 5 millones de registros y una vez se le debio agregar un campo y
recuerdo que no fue nada dramatico, claro yo no uso el Administrador sino
Tsql.

Porque no probas con Tsql y me decis cual es el tiempo que tarda si?, quizas
tu solucion sea en parte buena pero habroa que ver cuanto ahorras de tiempo,
que es basicamente el problema en el cual estas plantiando no?

Salu2

Maximiliano Damian Accotto


"Gustavo Morales" escribió en el mensaje
news:
Lamentablemente el diseño no es mio y ni siquiera el rediseño.
Pero he encontrado una forma (no digo que sea sencilla)
Genero el Script de la tabla y sus indices y lo ejecuto creando una nueva
tabla
traslado a ella los datos y borro la original. Renombro la nueva.
Al menos me ahorro un viaje de data entre tabla origen y la temporal que
hace el propio SQL.

Saludos



"Adrian D. Garcia" escribió en el mensaje
news:ur8v6#
> Lamentablemente no. Por eso mismo es fundamental planear todo este tipo


de
> cambios antes de que existan datos en las tablas, aunque muchas veces se
que
> es imposible.
>
> Saludos
> Adrian D. Garcia
> MCSD
> NDSoft Consultoria y Desarrollo
>
> "Gustavo Morales" wrote in message
> news:%
> > En una tabla con varios millones de registros necesito agregar algunos
> > campos y quitar otros.
> > Existe un modo menos agobiante que el normal y que copia datos, borra
> tabla,
> > crea tabla, copia datos.
> > (Mas índices)
> >
> > Gracias
> >
> >
>
>


Respuesta Responder a este mensaje
#9 Mariano Alvarez \(MUG\)
04/02/2004 - 13:18 | Informe spam
Si eliminas los constraints, luego renombras la tabla y creas la nueva pasas
los datos, borras la renombrada y agregas los constraints estarias bien.

Si tienes problemas de espacio ya sea por tempdb o por transaction log te
sugiero:

Hacer un bckup full primero, luego pasar la base en modo de recuperacion
simple antes de ahcer lo siguiente.

Crea un trigger de delete en la tabla renombrada que inserte los registros
borrados desde la tabla deleted a la tabla nueva (aqui puedes poner el valor
que quieras enlas columnas nuevas). y luego en un ciclo WHILE (sin cursores)
borras de a 10.000 registros de la tabla vieja los que te trasvasaran a la
tabla nueva debido al trigger. De esta forma no precisas gran espacio
adicional.



Jose Mariano Alvarez
Comunidad de base de datos
Grupo de Usuarios Microsoft
www.mug.org.ar


"Gustavo Morales" wrote in message
news:
Lamentablemente el diseño no es mio y ni siquiera el rediseño.
Pero he encontrado una forma (no digo que sea sencilla)
Genero el Script de la tabla y sus indices y lo ejecuto creando una nueva
tabla
traslado a ella los datos y borro la original. Renombro la nueva.
Al menos me ahorro un viaje de data entre tabla origen y la temporal que
hace el propio SQL.

Saludos



"Adrian D. Garcia" escribió en el mensaje
news:ur8v6#
> Lamentablemente no. Por eso mismo es fundamental planear todo este tipo


de
> cambios antes de que existan datos en las tablas, aunque muchas veces se
que
> es imposible.
>
> Saludos
> Adrian D. Garcia
> MCSD
> NDSoft Consultoria y Desarrollo
>
> "Gustavo Morales" wrote in message
> news:%
> > En una tabla con varios millones de registros necesito agregar algunos
> > campos y quitar otros.
> > Existe un modo menos agobiante que el normal y que copia datos, borra
> tabla,
> > crea tabla, copia datos.
> > (Mas índices)
> >
> > Gracias
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida