Modificar nombres de tablas

16/04/2009 - 17:06 por C a r l o s A n t o n i o | Informe spam
Saludos Compañeros.

Muy buen dia a todos ustedes.

¿Se puede crear un procedimiento almacenado que, con un bucle (o algo
parecido), recorra todas las tablas cuyos nombres no comiencen con el
prefijo "MiTabla_" y le añada el prefijo al nombre de la tabla? La razón
de esta pregunta es porque tengo que hacer modificaciones a una réplica de
una base de datos y luego tengo que aplicarlos a la base de datos real.

Muchas gracias por la ayuda,

C a r l o s A n t o n i o

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera
16/04/2009 - 17:34 | Informe spam
Para renombrar una tabla usted puede usar sp_rename:

http://msdn.microsoft.com/en-us/lib...88351.aspx

Para obtener los nombres de todas las tablas, consulte a la vista
INFORMATION_SCHEMA.TABLES y filtre según el nombre que usted necesita.


Entonces, una idea posible es que usted haga un procedimiento que itere
sobre un cursor de nombres de las tablas y que en cada iteracion ejecute el
sp_rename (o genere un script con los sp_rename adecuados para ejecutar
después).

Le dejo como ejercicio construir el procedimiento :-)

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"C a r l o s A n t o n i o" wrote:

Saludos Compañeros.

Muy buen dia a todos ustedes.

¿Se puede crear un procedimiento almacenado que, con un bucle (o algo
parecido), recorra todas las tablas cuyos nombres no comiencen con el
prefijo "MiTabla_" y le añada el prefijo al nombre de la tabla? La razón
de esta pregunta es porque tengo que hacer modificaciones a una réplica de
una base de datos y luego tengo que aplicarlos a la base de datos real.

Muchas gracias por la ayuda,

C a r l o s A n t o n i o



Respuesta Responder a este mensaje
#2 C a r l o s A n t o n i o
16/04/2009 - 19:05 | Informe spam
Saludos Gustavo,

Aunque parezca extraño, gracias por mostrarme la puerta y no llevarme a
través de ella. La forma que contestaste mi posting, en vez de traerme la
respuesta me provocó la curiosdad para encontrar la solución por mi cuenta
(sin menospreciar a los que gustosamente nos dan la respuesta ya digerida
que también es una señal de buena voluntad y compañerismo). Pues fue de
mucha satisfaccion haber descubierto la respuesta.

Bien pues, regresando al tema: logré escribir este procedimiento que
entiendo puede lograr los resultados que deseo. La dificultad la encuentro
ahora cuando quiero ejecutar el SP_RENAME. SQL Server no me acepta la
concatenación (si vale la palabra) del prefijo y el valor almacenado en la
variable. Indica un error de sintáxis en el signo '+' (especifocamente en
la linea "exec sp_rename @tbl_name , 'MiTabla_' + @tbl_name
"). Les adjunto el codigo completo para beneficio de todos y, de una vez,
ver donde estoy cometiendo el error de sintaxis. Gracias por la ayuda.


declare @tbl_name varchar(255)

declare crs_fas_tbls cursor fast_forward
for
select [name] as tbl_name from sysobjects where xtype = 'U' and not [name]
like 'MiTabla_%';

open crs_fas_tbls

fetch next from crs_fas_tbls into @tbl_name

while (@@fetch_status <> -1)

begin
if (@@fetch_status <> -2)
begin
exec sp_rename @tbl_name , 'MiTabla_' + @tbl_name
end
fetch next from crs_fas_tbls into @tbl_name
end

close crs_fas_tbls
deallocate crs_fas_tbls




"Gustavo Larriera" wrote in
message news:
Para renombrar una tabla usted puede usar sp_rename:

http://msdn.microsoft.com/en-us/lib...88351.aspx

Para obtener los nombres de todas las tablas, consulte a la vista
INFORMATION_SCHEMA.TABLES y filtre según el nombre que usted necesita.


Entonces, una idea posible es que usted haga un procedimiento que itere
sobre un cursor de nombres de las tablas y que en cada iteracion ejecute
el
sp_rename (o genere un script con los sp_rename adecuados para ejecutar
después).

Le dejo como ejercicio construir el procedimiento :-)

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"C a r l o s A n t o n i o" wrote:

Saludos Compañeros.

Muy buen dia a todos ustedes.

¿Se puede crear un procedimiento almacenado que, con un bucle (o algo
parecido), recorra todas las tablas cuyos nombres no comiencen con el
prefijo "MiTabla_" y le añada el prefijo al nombre de la tabla? La
razón
de esta pregunta es porque tengo que hacer modificaciones a una réplica
de
una base de datos y luego tengo que aplicarlos a la base de datos real.

Muchas gracias por la ayuda,

C a r l o s A n t o n i o






Respuesta Responder a este mensaje
#3 Carlos Sacristan
16/04/2009 - 19:15 | Informe spam
Nada te impide declarar dos variables, uno con el nombre actual de la tabla
y otro con el nombre que le quieres dar.

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil. si ambas están congeladas."
Edward V. Berard, ingeniero informático

http://blogs.solidq.com/es/elrincondeldba

"C a r l o s A n t o n i o" <carlvazpr¿arroba?yahoo.com> escribió en el
mensaje news:ex2%
Saludos Gustavo,

Aunque parezca extraño, gracias por mostrarme la puerta y no llevarme a
través de ella. La forma que contestaste mi posting, en vez de traerme la
respuesta me provocó la curiosdad para encontrar la solución por mi cuenta
(sin menospreciar a los que gustosamente nos dan la respuesta ya digerida
que también es una señal de buena voluntad y compañerismo). Pues fue de
mucha satisfaccion haber descubierto la respuesta.

Bien pues, regresando al tema: logré escribir este procedimiento que
entiendo puede lograr los resultados que deseo. La dificultad la
encuentro ahora cuando quiero ejecutar el SP_RENAME. SQL Server no me
acepta la concatenación (si vale la palabra) del prefijo y el valor
almacenado en la variable. Indica un error de sintáxis en el signo '+'
(especifocamente en la linea "exec sp_rename @tbl_name , 'MiTabla_' +
@tbl_name
"). Les adjunto el codigo completo para beneficio de todos y, de una vez,
ver donde estoy cometiendo el error de sintaxis. Gracias por la ayuda.


declare @tbl_name varchar(255)

declare crs_fas_tbls cursor fast_forward
for
select [name] as tbl_name from sysobjects where xtype = 'U' and not [name]
like 'MiTabla_%';

open crs_fas_tbls

fetch next from crs_fas_tbls into @tbl_name

while (@@fetch_status <> -1)

begin
if (@@fetch_status <> -2)
begin
exec sp_rename @tbl_name , 'MiTabla_' + @tbl_name
end
fetch next from crs_fas_tbls into @tbl_name
end

close crs_fas_tbls
deallocate crs_fas_tbls




"Gustavo Larriera" wrote in
message news:
Para renombrar una tabla usted puede usar sp_rename:

http://msdn.microsoft.com/en-us/lib...88351.aspx

Para obtener los nombres de todas las tablas, consulte a la vista
INFORMATION_SCHEMA.TABLES y filtre según el nombre que usted necesita.


Entonces, una idea posible es que usted haga un procedimiento que itere
sobre un cursor de nombres de las tablas y que en cada iteracion ejecute
el
sp_rename (o genere un script con los sp_rename adecuados para ejecutar
después).

Le dejo como ejercicio construir el procedimiento :-)

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"C a r l o s A n t o n i o" wrote:

Saludos Compañeros.

Muy buen dia a todos ustedes.

¿Se puede crear un procedimiento almacenado que, con un bucle (o algo
parecido), recorra todas las tablas cuyos nombres no comiencen con el
prefijo "MiTabla_" y le añada el prefijo al nombre de la tabla? La
razón
de esta pregunta es porque tengo que hacer modificaciones a una réplica
de
una base de datos y luego tengo que aplicarlos a la base de datos real.

Muchas gracias por la ayuda,

C a r l o s A n t o n i o










Respuesta Responder a este mensaje
#4 Gustavo Larriera
16/04/2009 - 19:48 | Informe spam
Me alegro que mi respuesta te haya motivado a investigar una solución.
Siempre digo que es mejor saber pescar antes que recibir pescado :-)

Respecto al problema menor que dices, puedes concatenar lo que necesitas en
una variable auciliar y luego usar dicha variable en la invocación al
procedimiento.


Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"C a r l o s A n t o n i o" wrote:

Saludos Gustavo,

Aunque parezca extraño, gracias por mostrarme la puerta y no llevarme a
través de ella. La forma que contestaste mi posting, en vez de traerme la
respuesta me provocó la curiosdad para encontrar la solución por mi cuenta
(sin menospreciar a los que gustosamente nos dan la respuesta ya digerida
que también es una señal de buena voluntad y compañerismo). Pues fue de
mucha satisfaccion haber descubierto la respuesta.

Bien pues, regresando al tema: logré escribir este procedimiento que
entiendo puede lograr los resultados que deseo. La dificultad la encuentro
ahora cuando quiero ejecutar el SP_RENAME. SQL Server no me acepta la
concatenación (si vale la palabra) del prefijo y el valor almacenado en la
variable. Indica un error de sintáxis en el signo '+' (especifocamente en
la linea "exec sp_rename @tbl_name , 'MiTabla_' + @tbl_name
"). Les adjunto el codigo completo para beneficio de todos y, de una vez,
ver donde estoy cometiendo el error de sintaxis. Gracias por la ayuda.


declare @tbl_name varchar(255)

declare crs_fas_tbls cursor fast_forward
for
select [name] as tbl_name from sysobjects where xtype = 'U' and not [name]
like 'MiTabla_%';

open crs_fas_tbls

fetch next from crs_fas_tbls into @tbl_name

while (@@fetch_status <> -1)

begin
if (@@fetch_status <> -2)
begin
exec sp_rename @tbl_name , 'MiTabla_' + @tbl_name
end
fetch next from crs_fas_tbls into @tbl_name
end

close crs_fas_tbls
deallocate crs_fas_tbls




"Gustavo Larriera" wrote in
message news:
> Para renombrar una tabla usted puede usar sp_rename:
>
> http://msdn.microsoft.com/en-us/lib...88351.aspx
>
> Para obtener los nombres de todas las tablas, consulte a la vista
> INFORMATION_SCHEMA.TABLES y filtre según el nombre que usted necesita.
>
>
> Entonces, una idea posible es que usted haga un procedimiento que itere
> sobre un cursor de nombres de las tablas y que en cada iteracion ejecute
> el
> sp_rename (o genere un script con los sp_rename adecuados para ejecutar
> después).
>
> Le dejo como ejercicio construir el procedimiento :-)
>
> Gustavo Larriera, Microsoft MVP
> http://www.linkedin.com/in/gustavolarriera
> Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
>
>
>
> "C a r l o s A n t o n i o" wrote:
>
>> Saludos Compañeros.
>>
>> Muy buen dia a todos ustedes.
>>
>> ¿Se puede crear un procedimiento almacenado que, con un bucle (o algo
>> parecido), recorra todas las tablas cuyos nombres no comiencen con el
>> prefijo "MiTabla_" y le añada el prefijo al nombre de la tabla? La
>> razón
>> de esta pregunta es porque tengo que hacer modificaciones a una réplica
>> de
>> una base de datos y luego tengo que aplicarlos a la base de datos real.
>>
>> Muchas gracias por la ayuda,
>>
>> C a r l o s A n t o n i o
>>
>>
>>
>



Respuesta Responder a este mensaje
#5 Gustavo Larriera
16/04/2009 - 20:01 | Informe spam
s/auciliar/auxiliar/g

:-)

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Gustavo Larriera" wrote:

Me alegro que mi respuesta te haya motivado a investigar una solución.
Siempre digo que es mejor saber pescar antes que recibir pescado :-)

Respecto al problema menor que dices, puedes concatenar lo que necesitas en
una variable auciliar y luego usar dicha variable en la invocación al
procedimiento.


Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"C a r l o s A n t o n i o" wrote:

> Saludos Gustavo,
>
> Aunque parezca extraño, gracias por mostrarme la puerta y no llevarme a
> través de ella. La forma que contestaste mi posting, en vez de traerme la
> respuesta me provocó la curiosdad para encontrar la solución por mi cuenta
> (sin menospreciar a los que gustosamente nos dan la respuesta ya digerida
> que también es una señal de buena voluntad y compañerismo). Pues fue de
> mucha satisfaccion haber descubierto la respuesta.
>
> Bien pues, regresando al tema: logré escribir este procedimiento que
> entiendo puede lograr los resultados que deseo. La dificultad la encuentro
> ahora cuando quiero ejecutar el SP_RENAME. SQL Server no me acepta la
> concatenación (si vale la palabra) del prefijo y el valor almacenado en la
> variable. Indica un error de sintáxis en el signo '+' (especifocamente en
> la linea "exec sp_rename @tbl_name , 'MiTabla_' + @tbl_name
> "). Les adjunto el codigo completo para beneficio de todos y, de una vez,
> ver donde estoy cometiendo el error de sintaxis. Gracias por la ayuda.
>
>
> declare @tbl_name varchar(255)
>
> declare crs_fas_tbls cursor fast_forward
> for
> select [name] as tbl_name from sysobjects where xtype = 'U' and not [name]
> like 'MiTabla_%';
>
> open crs_fas_tbls
>
> fetch next from crs_fas_tbls into @tbl_name
>
> while (@@fetch_status <> -1)
>
> begin
> if (@@fetch_status <> -2)
> begin
> exec sp_rename @tbl_name , 'MiTabla_' + @tbl_name
> end
> fetch next from crs_fas_tbls into @tbl_name
> end
>
> close crs_fas_tbls
> deallocate crs_fas_tbls
>
>
>
>
> "Gustavo Larriera" wrote in
> message news:
> > Para renombrar una tabla usted puede usar sp_rename:
> >
> > http://msdn.microsoft.com/en-us/lib...88351.aspx
> >
> > Para obtener los nombres de todas las tablas, consulte a la vista
> > INFORMATION_SCHEMA.TABLES y filtre según el nombre que usted necesita.
> >
> >
> > Entonces, una idea posible es que usted haga un procedimiento que itere
> > sobre un cursor de nombres de las tablas y que en cada iteracion ejecute
> > el
> > sp_rename (o genere un script con los sp_rename adecuados para ejecutar
> > después).
> >
> > Le dejo como ejercicio construir el procedimiento :-)
> >
> > Gustavo Larriera, Microsoft MVP
> > http://www.linkedin.com/in/gustavolarriera
> > Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
> >
> >
> >
> > "C a r l o s A n t o n i o" wrote:
> >
> >> Saludos Compañeros.
> >>
> >> Muy buen dia a todos ustedes.
> >>
> >> ¿Se puede crear un procedimiento almacenado que, con un bucle (o algo
> >> parecido), recorra todas las tablas cuyos nombres no comiencen con el
> >> prefijo "MiTabla_" y le añada el prefijo al nombre de la tabla? La
> >> razón
> >> de esta pregunta es porque tengo que hacer modificaciones a una réplica
> >> de
> >> una base de datos y luego tengo que aplicarlos a la base de datos real.
> >>
> >> Muchas gracias por la ayuda,
> >>
> >> C a r l o s A n t o n i o
> >>
> >>
> >>
> >
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida