Autorisation nécessaire pour afficher la liste des tables dans Management Studio
J'ai cherché SI pour une question pertinente existant déjà, mais ne pouvait pas en trouver un.
Je suis réglage de Lecture seule du rôle de base de données pour un peu de bases de données dans notre ferme de serveur. Voici un échantillon des autorisations pour un tableau:
GRANT SELECT ON [dbo].[Table] TO [ReadOnly]
GRANT VIEW DEFINITION ON [dbo].[Table] TO [ReadOnly]
DENY ALTER ON [dbo].[Table] TO [ReadOnly]
DENY CONTROL ON [dbo].[Table] TO [ReadOnly]
DENY DELETE ON [dbo].[Table] TO [ReadOnly]
DENY INSERT ON [dbo].[Table] TO [ReadOnly]
DENY REFERENCES ON [dbo].[Table] TO [ReadOnly]
DENY TAKE OWNERSHIP ON [dbo].[Table] TO [ReadOnly]
DENY UPDATE ON [dbo].[Table] TO [ReadOnly]
Cela fonctionne comme prévu pour le SÉLECTIONNER des autorisations...je suis capable de SEULEMENT SÉLECTIONNER des données, qui est exactky ce que je veux.
Cependant, je ne peux pas voir la liste des tables dans les "Tables" de l'onglet de la base de données spécifiée dans Management Studio. Mon but avec cet utilisateur est de fournir à des utilisateurs qui ne sont pas familiers avec SQL une connexion qu'ils peuvent utiliser pour extraire des données et de commencer à expérimenter avec SQL. Ces utilisateurs ont de l'expérience avec SAS, une statistique le traitement de la langue, de sorte qu'ils ont une certaine expérience de travail avec le code, mais pas tellement spécifiquement en SQL.
Lequel de ces autorisations d'afficher la liste des tables dans Management Studio?
C'est la seule permission dont vous avez besoin - vous êtes expressément exclut pas d'autres autorisations pouvant être héritées du même utilisateur, ce qui est primordial, les Subventions (REFUSER l'emporte toujours sur la SUBVENTION). Changement de RÉVOQUER, et vous pourrez voir les objets dans SSMS (voir la réponse ci-dessous)
OriginalL'auteur karlgrz | 2009-11-10
Vous devez vous connecter pour publier un commentaire.
L'octroi de toute autorisation et la définition de la vue est tout ce que vous devez, cependant vous êtes aussi explicitement
DENY
ing autorisations pouvant être héritées du même utilisateur (REFUSER remplace toujours un SUBVENTION). Si vous n'avez tout simplement pasGRANT
la permission, ils n'auront pas (sinon, vous pouvez RÉVOQUER plutôt queDENY
, ce qui n'est pas explicitement remplacer unGRANT
). Si vous modifiez votreDENY
's à RÉVOQUER dans le script ci-dessus, vos utilisateurs seront en mesure de faire la liste/afficher les objets dansSSMS
.OriginalL'auteur boydc7
Ce n'est pas la réponse à la question - mais il ne ce que vous devez faire:
utiliser le DB_DataReader de Rôle de l'utilisateur que vous voulez être en lecture seule.
alors si vous avez besoin de plus amples cacher quelques tables à partir de lui - simplement de traiter avec eux.
Je pense que vous pourriez avoir besoin pour accorder la définition de la vue sur plusieurs objets de ce travail, je suis à essayer de comprendre qui sont les...
J'ai édité la réponse - la db_datareader rôle est un bon choix pour créer un accès en lecture seule de l'utilisateur. qui peut voir le schéma, mais ne peut pas accéder aux tables.
OriginalL'auteur Dani