Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/11/2010, 13h01   #1
Invité de passage
 
Inscription : juillet 2004
Messages : 10
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 10
Points : 3
Points : 3
Par défaut Liste des procédures stockées pour un role donné

Bonjour,
J'aimerai savoir comment récupérér la liste des procédures stockées auxquelles un role est associé?

Merci de votre aide.
serge benhamou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 13h33   #2
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 658
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 658
Points : 8 687
Points : 8 687
Bonjour,

Un rôle n'est pas associé à des objets de base de données.
Un rôle a des privilèges sur des objets de la base de données.
Donc je ne sais pas si vous n'auriez pas confondu la notion de rôle avec la notion de schéma.

Vous pouvez vous servir de la requête ci-dessous pour trouver les privilèges de tous les rôles de votre base de données sur tous les objets pour lesquels ils ont un privilège :

Code :
1
2
3
4
5
6
SELECT		DP.permission_name
		, P.name AS procedure_name
		, DPR.name AS role_name
FROM		sys.database_permissions AS DP
INNER JOIN	sys.procedures AS P ON DP.major_id = P.object_id
INNER JOIN	sys.database_principals AS DPR ON DPR.principal_id = DP.grantee_principal_id
Vous aurez probablement besoin d'une clause WHERE DPR.name = 'monRole'

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 14h06   #3
Invité de passage
 
Inscription : juillet 2004
Messages : 10
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 10
Points : 3
Points : 3
Citation:
Envoyé par elsuket Voir le message
Bonjour,

Un rôle n'est pas associé à des objets de base de données.
Un rôle a des privilèges sur des objets de la base de données.
Donc je ne sais pas si vous n'auriez pas confondu la notion de rôle avec la notion de schéma.

Vous pouvez vous servir de la requête ci-dessous pour trouver les privilèges de tous les rôles de votre base de données sur tous les objets pour lesquels ils ont un privilège :

Code :
1
2
3
4
5
6
SELECT		DP.permission_name
		, P.name AS procedure_name
		, DPR.name AS role_name
FROM		sys.database_permissions AS DP
INNER JOIN	sys.procedures AS P ON DP.major_id = P.object_id
INNER JOIN	sys.database_principals AS DPR ON DPR.principal_id = DP.grantee_principal_id
Vous aurez probablement besoin d'une clause WHERE DPR.name = 'monRole'

@++
Merci pour votre réponse.
Ca correspond à ce que je souhaitais.
Afin d'affiner ma requete, est-il possible de limiter aux procdures stockées custom?
serge benhamou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 14h20   #4
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 658
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 658
Points : 8 687
Points : 8 687
Il me semble que cette requête ne retourne que les privilèges sur les objets créés par l'utilisateur.
Avez-vous un exemple où ce n'est pas le cas ?

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 14h24   #5
Invité de passage
 
Inscription : juillet 2004
Messages : 10
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 10
Points : 3
Points : 3
Citation:
Envoyé par elsuket Voir le message
Il me semble que cette requête ne retourne que les privilèges sur les objets créés par l'utilisateur.
Avez-vous un exemple où ce n'est pas le cas ?

@++
la requete ressort les procedures telles que par exemple sp_helpdiagramdefinition ou dt_addtosourcecontrol avec le role public ou guest

Au final, je filtre avec mon role. Du coup, je n'ai que des proc custom.

Merci pour votre aide !
serge benhamou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h05.


 
 
 
 
Partenaires

Hébergement Web