J'ai essayé de dépanner une connexion qui n'est pas en mesure d'afficher certaines tables dans une base de données SQL Server 2012. Ce faisant, je trouve que je ne comprends pas très bien quelle appartenance au db_owner
le rôle le permet. Je peux comprendre les autres rôles tels que db_datareader and db_datawriter
mais je reste confus quant à ce que db_owner
permet.
Veuillez consulter référence sur BOL pour les rôles au niveau de la base de données :
db_owner
Les membres du rôle de base de données fixe db_owner peuvent effectuer toutes les activités de configuration et de maintenance sur la base de données, et peuvent également supprimer la base de données.
La façon la plus simple de voir toutes les autorisations est d'utiliser la fonction sys.fn_my_permissions()
. Vérifiez d'abord que vous êtes membre de db_owner
:
select
rol.name
from sys.database_principals mem
inner join sys.database_role_members drm
on drm.member_principal_id = mem.principal_id
inner join sys.database_principals rol
on drm.role_principal_id = rol.principal_id
where mem.principal_id = user_id();
Répertoriez maintenant toutes les autorisations de base de données efficaces:
select *
from sys.fn_my_permissions(null, 'database');
Cela devrait être assez granulaire pour vos besoins. Quelque chose à noter, sys.fn_my_permissions()
renvoie les autorisations effective, alors pensez-y comme une agrégation.