Bonjour,

J'ai une procedure stockée que me rapporte pas mal d'infos sur les bases de données de mes différents serveurs.
Ce que je voudrais c'est ajouter les noms des utilisateurs des bases de données à mon fichier.

Ma requête est la suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
select name from sysusers users where users.name not in ('dbo','guest') and users.hasdbaccess = 1;
Cette requête donne le bon résultat, je l'encapsule dans le curseur qui traite toutes les bases de mon serveur en créant un second curseur.
Le problème est que pour avoir ce résultat il faut que je me positionne a chaque fois sur la bonne base de données (en faisant un use ?) mais je n'y arrive pas.
Il n'est pas possible de faire un USE dans la procédure, j'ai donc essayé de faire comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
set @pusers = ''
set @puserstemp = ''
set @sql = 'USE [' + @dbname + ']'
exec sp_executesql @sql
--On declare le curseur necessaire pour recuperer les utilisateurs
DECLARE APPUSERS CURSOR FOR
		select name from sysusers users where users.name not in ('dbo','guest') and users.hasdbaccess = 1;
OPEN APPUSERS
		FETCH next from APPUSERS INTO @puserstemp
		set @pusers = @puserstemp
	        FETCH next from APPUSERS INTO @puserstemp
 
			WHILE @@fetch_status = 0
			BEGIN
				set @pusers = @pusers +','+ @puserstemp
				FETCH next from APPUSERS INTO @puserstemp
			END
 
CLOSE APPUSERS
DEALLOCATE APPUSERS
mais cela n'a aucun effet j'ai toujours les utilisateurs de ma base de données msdb.

Merci d'avance pour votre aide.