[TSQL] Nom des utilisateurs d'une base de données
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:
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:
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. ;)