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.
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:
me indica que la sintaxis es incorrecta cerca de 'g20110829125345' que es el nombre de la base de datos que quiero reducir.
Muchas gracias
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


0