Bonjour à tous,
Je souhaiterais savoir comment récupérer à l'aide d'une requête sql les utilisateurs avec le rôle dbcreator.
Je n'ai rien trouvé sur le net qui correspond à mes besoins.
Merci d'avance pour vos futures réponses.
Bonjour à tous,
Je souhaiterais savoir comment récupérer à l'aide d'une requête sql les utilisateurs avec le rôle dbcreator.
Je n'ai rien trouvé sur le net qui correspond à mes besoins.
Merci d'avance pour vos futures réponses.
Bonjour,
Voici un peu de lecture :
http://blog.developpez.com/sqlpro/p7..._et_utilisateu
MCSA SQL SERVER |MCT | MVP Data Platform
Quelque chose comme :
A +
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT U.name AS USER_NAME, R.name AS ROLE_NAME FROM sys.database_principals AS U JOIN sys.database_permissions AS P ON U.principal_id = P.grantee_principal_id JOIN sys.database_principals AS R ON P.major_id = R.principal_id WHERE U.owning_principal_id IS NULL AND R."type" = 'R' AND R.name = 'db_creator';
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/ * * * * *
Merci pour vos réponses,
La requête suivante retourne aucun résultat :
En effet, lorsque je vais voir la table sys.database_principals je ne trouve ni mon utilisateur ni le rôle db_creator.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT U.name AS USER_NAME, R.name AS ROLE_NAME FROM sys.database_principals AS U JOIN sys.database_permissions AS P ON U.principal_id = P.grantee_principal_id JOIN sys.database_principals AS R ON P.major_id = R.principal_id WHERE U.owning_principal_id IS NULL AND R."type" = 'R' AND R.name = 'db_creator';
En cherchant plus, je suis allé voir dans la table sys.server_principals dans laquelle je retrouve bien les infos souhaités.
J'ai essayé d'adapter la requête comme suite :
La requête retourne encore aucun résultat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT U.name AS USER_NAME, R.name AS ROLE_NAME FROM sys.server_principals AS U JOIN sys.server_permissions AS P ON U.principal_id = P.grantee_principal_id JOIN sys.server_principals AS R ON P.major_id = R.principal_id AND U."type" = 'R' AND U.name = 'dbcreator'
Avez-vous des idées ?
Merci.
Mea culpa : db_creator est une rôle de serveur affectable à un comptes de connexion (login) => sys.server_principals donc, vous avez bien fait !
maintenant tout dépen de ce que vous voulez :
1) les entité de sécurités ("principals") ayant le privilège db_creator : c'est la requête que je vous ais donné !
2) les entités de sécurité membre du rôle "dbcreator" :
A +
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT L.name AS LOGIN_NAME, R.name AS ROLE_NAME FROM sys.server_principals AS L JOIN sys.server_role_members AS RM ON L.principal_id = RM.member_principal_id JOIN sys.server_principals AS R ON RM.role_principal_id = R.principal_id WHERE L.owning_principal_id IS NULL AND R."type" = 'R' AND R.name = 'dbcreator'
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/ * * * * *
Super, ça me retourne le résultat voulu !
Juste une petite précision, sur Sql server 2008 R2 la ligne suivante me génère une erreur :
Effectivement, la colonne "owning_principal_id" n'existe pas dans la table "sys.server_permissions".
Code : Sélectionner tout - Visualiser dans une fenêtre à part WHERE L.owning_principal_id IS NULL
Si je supprime cette ligne, je retrouve tout de même le même résultat.
L'absence de cette ligne peut-elle avoir un impact sur le résultat final ?
Encore merci pour votre aide.
Bonjour,
Vous pouvez supprimer cette ligne en toute quiétude.
@++
Super,
Merci à tous pour votre participation .
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager