Utiliser une variable dans une requête
Bonjour,
J'ai écrit un script SQL qui passe en revue l'ensemble des bases existantes sur un serveur. Pour chaque base, j'ai besoin d'exécuter une requête sur la table sys.database_files et de récupérer la valeur retournée, mais j'ai des problèmes de syntaxe.
Voici le script que boucle sur l'ensemble des bases :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
declare c cursor for
select name from sysdatabases
where name like 'DB%' and name <> 'DB000000'
and (databasepropertyex(name,'Status') = 'ONLINE')
for read only
declare @name varchar(32)
declare @cmd varchar(256)
declare @size integer
open c
fetch next from c into @name
while @@fetch_status = 0
begin
--
-- ici les commandes à exécuter pour chaque base
--
fetch next from c into @name
end
close c
deallocate c |
A l'intérieur de la boucle, j'ai essayé de faire un USE :
Code:
1 2 3
| select @cmd = 'use ' + @name
execute (@cmd)
select size from sys.sysdatabase_files |
Mais la requête ne s'exécute pas sur la base définie par @name mais sur MASTER.
Comment faire pour exécuter la requête sur la base définie par @name ?
J'ai essayé
Code:
select size from @name.sys.sysdatabase_files
qui renvoie une erreur de syntaxe n°156
J'ai aussi essayé de définir la syntaxe de ma requête dans une variable :
Code:
1 2
| select @cmd = 'select size from ' + @name +'sys.sysdatabase_files'
execute (@cmd) |
Ce qui fonctionne, mais comment faire pour récupérer le résultat de la requête dans une variable ?
D'avance merci pour votre aide.
Environnement : SQL2005