none
Comment octroyer un rôle à un utilisateur RRS feed

  • Question

  • Bonjour, 

    J'ai crée une base de données GESTION_DVD en tant qu'utilisateur dbo.

    J'ai crée un role ROLE1 auquel j'ai octroyé les droits de selection(select) de mise à jour(update) et d'insertion sur les tables MEMBRE, RESERVATION, EXEMPLAIRE_DVD et DVD_ORIGINAL.

    Je souhaite ensuite octroyer ce rôle à l'utilisateur dbo.

    Je tape la requête suivante 

    GRANT ROLE1 to dbo 

    et obtiens le message suivant :

    "syntaxe incorrecte vers ROLE1"

    Pouvez-vous m'expliquer pourquoi.
    Je vous en remercie.

    Par ailleurs,lorsque j'ai attribué au rôle ROLE1 les droits sur les tables MEMBRE,RESERVATION,EXEMPLAIRE_DVD et DVD_ORIGINAL, j'ai été contrainte de procéder ainsi

    GRANT select , update, insert on MEMBRE TO ROLE1 ; 
    GRANT select , update, insert on RESERVATION TO ROLE1;
    GRANT  select , update, insert on DVD_ORIGINAL TO ROLE1;
    GRANT  select , update, insert on EXEMPLAIRE_DVD TO ROLE1;
    GRANT  select , update, insert on DATE_LOCATION TO ROLE1;


     alors que je souhaitais procéder ainsi

    GRANT select , update, insert on MEMBRE, RESERVATION, DVD_ORIGINAL, EXEMPLAIRE_DVD,DATE_LOCATION TO ROLE1 ;

    mais cela ne fonctionnait pas.

    Je vous remercie de bien vouloir m'expliquer pourquoi.
    Bien cordialement.




    developement

    mardi 17 novembre 2015 09:24

Toutes les réponses

  • Bonjour

    Probablement parce que la syntaxe est incorrecte ! Ce n'est pas possible d'énumérer des objets de telle manière.

    L'utilisateur de base de donnée DBO n'a nullement besoin de cela. Il dispose de tous les privilèges sur tous les objets de la base.

    Par contre, pour le côté utilisateur de votre appli, je vous suggère de

    - créer un role dans votre base.
    - donner à votre role les privilèges que vous souhaitez (directement sur le schéma DBO si vous souhaitez ne pas avoir à énumérer toutes les tables / vues, ce qui vous embete)
    - créer un login (niveau instance) et faire un mapping dans la base en question, en lui affectant le role créé précédemment.

    Donc, à peu de choses près :

    Create Role Mon Role .....

    Grant select,insert,update,delete on schema::[dbo] to MonRole

    Create login MonLogin

    Use MaDB

    Create user MonLogin for login MonGlogin

    Alter role MonRole Add member [MonLogin]

    cdlt

    Christophe


    Christophe LAPORTE - Independent Consultant & Trainer - SQL Server MVP-MCM

    mardi 22 décembre 2015 15:28