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 :
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.
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;
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 :
mais cela n'a aucun effet j'ai toujours les utilisateurs de ma base de données msdb.
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
Merci d'avance pour votre aide.![]()
Partager