Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration SQL Server Discussion :

Droit "Afficher la définition" sur toutes les vues


Sujet :

Administration SQL Server

  1. #1
    Membre régulier
    Droit "Afficher la définition" sur toutes les vues
    Bonjour,

    Petit souci d'administration d'une Bdd MS SQL Server 2012 SP4, je cherche à donner à nos développeurs, l'accès à "comment qu'elle a été construite cette vue ?", sur une Bdd de Prod.
    Il faut donc qu'ils puissent avoir connaissance de la définition de la vue, sans qu'ils puissent la modifier (nous sommes en Prod).

    Dans les rôles de Bdd, je n'ai rien trouvé qui semble coller à mon besoin (peut-être ai-je mal vu, je débute ).
    J'ai alors créé un rôle de Bdd perso, auquel j'ai donné le droit "Afficher la définition" sur toutes les vues de la Bdd.
    J'ai ensuite donné ce nouveau rôle à nos Dev, qui avaient déjà le rôle "db datareader".

    Ça fonctionnait bien, jusqu'à ce que d'autres vues soient créées et que les Dev s'étonnent de ne pas pouvoir voir la définition de ces nouvelles vues.

    Il faudrait donc que j'inclue les nouvelles vues à mon rôle de Bdd à chaque création de vues, où que je révise régulièrement les droits.

    Je peux paraître faignant, mais aucune de ces 2 solutions me séduit.
    N'y aurait-il pas un droit fixe (Bdd / Serveur) que je ne connais pas et qui permettrait de voir la définition de toutes les vues d'une Bdd, sans pouvoir les modifier ?

    J'espère ne pas avoir été confus dans mes explications

    Baldwin,

  2. #2
    Modérateur

    Bonjour,

    Vous avez effectué un GRANT pour chaque vue existante ?
    comme ceci :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    GRANT VIEW DEFINITION ON [UneVue] To [LeRole]


    il est donc normal de ne pas avoir le privilege sur les nouvelles vues.

    Vous pouvez octroyer le privilege sur une schéma :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    GRANT VIEW DEFINITION ON Schema::[LeSchema] To [LeRole]


    ou bien sur la base compléte, en ne précisant pas l'objet cible

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    GRANT VIEW DEFINITION To [LeRole]


    ou bien encore pour toutes les bases

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    GRANT VIEW ANY DEFINITION To [LeRole]

  3. #3
    Rédacteur

    Et plus généralement sur la gestion des privilèges dans MS SQL Server :
    https://blog.developpez.com/sqlpro/p..._et_utilisateu

    Pour information on ne parle pas de droits.... Mais de privilèges ou permission. Privilège de pouvoir exécuter telle ou telle commande !

    A +
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  4. #4
    Membre régulier
    Citation Envoyé par aieeeuuuuu Voir le message
    Bonjour, [...]
    Excellent !
    C'est exactement ce que je cherchais, merci


    Citation Envoyé par SQLpro Voir le message
    Et plus généralement [...]
    Je vais prendre un café et éplucher tout ça

    Dernière question, c'est peut-être expliqué dans ton blog, pourquoi ne parle-t-on pas de droits, mais de privilèges ou permission ?

  5. #5
    Rédacteur

    Citation Envoyé par DevBaldwin Voir le message
    ...Dernière question, c'est peut-être expliqué dans ton blog, pourquoi ne parle-t-on pas de droits, mais de privilèges ou permission ?
    Un droit c'est quelque chose affecté directement au niveau système. par exemple droit en écriture en lecture en exécution. Mais dans une base de données ce n'est pas l'utilisateur qui lit ou écrit. C'est le moteur SQL ! L'utilisaeur ne peut que lancer des commandes pour lesquelles il a reçu une autorisation. On appelle cela privilège.
    Autrement dit l'utilisateur a le privilège de lancer telle ou telle commande sur tel ou tel objet....

    A +
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  6. #6
    Membre régulier
    Citation Envoyé par SQLpro Voir le message
    Un droit c'est quelque chose affecté directement au niveau système. par exemple droit en écriture en lecture en exécution. Mais dans une base de données ce n'est pas l'utilisateur qui lit ou écrit. C'est le moteur SQL ! L'utilisaeur ne peut que lancer des commandes pour lesquelles il a reçu une autorisation. On appelle cela privilège.
    Autrement dit l'utilisateur a le privilège de lancer telle ou telle commande sur tel ou tel objet....

    A +
    Ok c'est clair !

    Merci pour tout ça.

###raw>template_hook.ano_emploi###