Sentencia USE para cambiar de una DB a otra no funciona

08/05/2008 - 22:32 por jaisol | Informe spam
Buenas,

La idea es barrer todas las bases de datos, y en cada una hacer una
operacion.

Ya hice el script pero no me funciona la sentencia del USE, a modo de
ejemplo trate con algo mas sencillo pero no se porque no cambia de la
base de datos actual a la base de datos que quiero (en este caso de la
msdb a la master).


USE msdb
GO
PRINT DB_NAME() -- imprime la base de datos actual, o sea: msdb
DECLARE @BASE VARCHAR(100)
SET @BASE = 'master'
EXEC('USE ' + @DB)
PRINT DB_NAME()


Lo probe tanto en SQL 2000 como 2005 y no paso nada.
No se que esta malo, o q debo hacer para q el cambio de una base de
datos a otra sea efectivo.

Agradeciendo de antemano cualquier colaboracion,
Jaisol

Preguntas similare

Leer las respuestas

#1 Gux (MVP)
08/05/2008 - 22:44 | Informe spam
Intente lo siguiente: Ponga un GO en la línea siguiente a la ejecución del USE.

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"jaisol" wrote:

Buenas,

La idea es barrer todas las bases de datos, y en cada una hacer una
operacion.

Ya hice el script pero no me funciona la sentencia del USE, a modo de
ejemplo trate con algo mas sencillo pero no se porque no cambia de la
base de datos actual a la base de datos que quiero (en este caso de la
msdb a la master).


USE msdb
GO
PRINT DB_NAME() -- imprime la base de datos actual, o sea: msdb
DECLARE @BASE VARCHAR(100)
SET @BASE = 'master'
EXEC('USE ' + @DB)
PRINT DB_NAME()


Lo probe tanto en SQL 2000 como 2005 y no paso nada.
No se que esta malo, o q debo hacer para q el cambio de una base de
datos a otra sea efectivo.

Agradeciendo de antemano cualquier colaboracion,
Jaisol

Respuesta Responder a este mensaje
#2 jaisol
08/05/2008 - 22:58 | Informe spam
Tampoco sirve con el GO, ya lo habia probado.

Pareciera q el EXEC abre una nueva conexion en el mismo contexto sin
afectar a la padre.

Lo resolvi usando el no documentado sp: sp_MSforeachdb

Gracias de todas maneras.
Respuesta Responder a este mensaje
#3 Isaias
09/05/2008 - 03:06 | Informe spam
En alguna ocasion, tambien quise hacer lo mismo, manejar el USE @VARIABLE,
pero no me quedo de otra, mas que utilizar el archivo con T-SQL y ejecutarlo
por medio de OSQL.EXE
Saludos
IIslas


"jaisol" wrote:

Tampoco sirve con el GO, ya lo habia probado.

Pareciera q el EXEC abre una nueva conexion en el mismo contexto sin
afectar a la padre.

Lo resolvi usando el no documentado sp: sp_MSforeachdb

Gracias de todas maneras.

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