IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

[TSQL] Nom des utilisateurs d'une base de données


Sujet :

MS SQL Server

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 226
    Par défaut [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 : 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.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 990
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 990
    Billets dans le blog
    6
    Par défaut
    il faut faire du SQL dynamique y compris pour votre curseur.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 226
    Par défaut
    Merci je n'y avais pas pensé, ça marche

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/02/2011, 18h52
  2. Réponses: 2
    Dernier message: 03/11/2008, 07h33
  3. Afficher les nom des tables d'une base de donnée
    Par newmar dans le forum Administration
    Réponses: 4
    Dernier message: 02/04/2008, 16h40
  4. Réponses: 5
    Dernier message: 10/01/2008, 08h47
  5. Connaitre le nom des tables d'une Base de donnée
    Par Pe04 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 01/03/2006, 13h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo