SQL - Usar variable en shrink database

 
Vista:

Usar variable en shrink database

Publicado por David Fernandez (1 intervención) el 20/08/2020 01:40:05
Buenas noches,

La verdad es que me estoy volviendo loco para hacer una consulta con variables para reducir una base de datos que cumpla una serie de condiciones. Alguno os llevaréis las manos a la cabeza, pero ya la query que voy a poner está muy sobada y no sé por dónde avanzar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
USE Copia
DECLARE @BDUSO nvarchar(30)
DECLARE @SQL nvarchar(1000)
DECLARE @SQL2 nvarchar(1000)
DECLARE @SQL3 nvarchar(1000)
SET @BDUSO= (SELECT cNombreBD from tbCopia where cEstado='U')
 
	/*Build Command*/
EXEC('USE ' + @BDUSO)
 
	SET @SQL = 'ALTER DATABASE ' + @BDUSO + ' SET RECOVERY SIMPLE'-- + 'USE ' + @BDUSO + ' DBCC SHRINKFILE (''gYYYYMMDDHHNNSS_log'', 1)' + 'ALTER DATABASE ' + @BDUSO + ' SET RECOVERY FULL'
	SET @SQL2 = 'USE ' + @BDUSO + ' DBCC SHRINKFILE (''gYYYYMMDDHHNNSS_log'', 1)'
	SET @SQL3 = 'ALTER DATABASE ' + @BDUSO + ' SET RECOVERY FULL'
	EXEC sp_executesql @SQL, @SQL2, @SQL3



Básicamente quiero que coja la base de datos que cumpla la condición que esté en uso (U) en la búsqueda del parámetro en otra base de datos. La cuestión es que si defino las variables @SQL, @SQL2 y @SQL3 me indica que la sintaxis es incorrecta cerca de la palabra USE, pero ya no sé en qué punto. No sé si me podéis echar una mano.

Cuando ejecuto la consulta de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
USE Copia
DECLARE @BDUSO nvarchar(30)
DECLARE @SQL nvarchar(1000)
--DECLARE @SQL2 nvarchar(1000)
--DECLARE @SQL3 nvarchar(1000)
SET @BDUSO= (SELECT cNombreBD from tbCopia where cEstado='U')
 
	/*Build Command*/
EXEC('USE ' + @BDUSO)
 
	SET @SQL = 'ALTER DATABASE ' + @BDUSO + ' SET RECOVERY SIMPLE' + 'USE ' + @BDUSO + ' DBCC SHRINKFILE (''gYYYYMMDDHHNNSS_log'', 1)' + 'ALTER DATABASE ' + @BDUSO + ' SET RECOVERY FULL'
	--SET @SQL2 = 'USE ' + @BDUSO + ' DBCC SHRINKFILE (''gYYYYMMDDHHNNSS_log'', 1)'
	--SET @SQL3 = 'ALTER DATABASE ' + @BDUSO + ' SET RECOVERY FULL'
	EXEC sp_executesql @SQL--, @SQL2, @SQL3

me indica que la sintaxis es incorrecta cerca de 'g20110829125345' que es el nombre de la base de datos que quiero reducir.

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Usar variable en shrink database

Publicado por Isaias (1921 intervenciones) el 20/08/2020 16:50:00
Simple, antes de ejecutar lo que contiene la variable @SQL, debes verificar su contenido, realiza un

SELECT @SQL

Revisa que contiene, ¿puedes postear el contenido de esta variable?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar