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

Développement SQL Server Discussion :

Utilisation de "sp_MSForEachdb"


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Par défaut Utilisation de "sp_MSForEachdb"
    Bonjour,

    Ce qui suit se fait exécuter avec SQL Server 2005 (9.0.3050)

    J'aimerais lister tous les users de chacune des bases de données avec leur database role membership. J'utilise donc la procedure stockée "sp_MSForEachdb".

    Le code suivant fonctionne bien sur certain serveur SQL mais pas sur celui-ci, à cause du nom d'une des bases de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    EXEC sp_MSForEachdb
     'USE ? 
    select  ''?'' as DBName, a.name, c.name
    from ?.dbo.sysusers a
    	 join ?.dbo.sysmembers b on (a.uid = b.memberuid)
    	 join ?.dbo.sysusers c on (b.groupuid = c.uid)
    order by 1
    '
    Je reçois l'erreur suivante :

    Msg 911, Level 16, State 1, Line 1
    Could not locate entry in sysdatabases for database 'SharePoint_AdminContent_85aa6f06'. No entry found with that name. Make sure that the name is entered correctly.
    Et je sais pourquoi. C'est parce que la fameuse base de donnée s'appelle en fait....

    SharePoint_AdminContent_85aa6f06-e999-4873-9740-cab270a17bc2
    La procédure stockée "sp_MSForEachdb" ne semble pas bien digérer le tiret...

    Comment puis-je faire pour contourner ce problème?

    J'ai essayé d'ajouter if db_id(''?'') <> 24, 24 étant le numéro de la base de donnée en question...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    EXEC sp_MSForEachdb
     'USE ? 
    if db_id(''?'') <> 24
    select  ''?'' as DBName, a.name, c.name
    from ?.dbo.sysusers a
    	 join ?.dbo.sysmembers b on (a.uid = b.memberuid)
    	 join ?.dbo.sysusers c on (b.groupuid = c.uid)
    order by 1
    '
    mais je reçois toujours la même erreur.

    Merci pour votre aide !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    EXEC sp_MSForEachdb
     'USE [?] 
    if db_id(''?'') <> 24
    select  ''?'' as DBName, a.name, c.name
    from [?].dbo.sysusers a
    	 join [?].dbo.sysmembers b on (a.uid = b.memberuid)
    	 join [?].dbo.sysusers c on (b.groupuid = c.uid)
    order by 1'
    La solution est toute bête... quand on la connait !

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    Attention : proc non documentée et non garantie !

    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/ * * * * *

  4. #4
    Membre éclairé Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Par défaut


    Merci Jerome_Mtl ! Effectivement c'était tout bête, j'avais même pas pensé l'essayer. Pourtant je me disais qu'il fallait juste mettre des crochets mais je me bornais à me dire que ça devait être dans la stored procedure qu'il fallait faire ça....

    Merci !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/11/2006, 18h00

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