IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

Créer un schéma par utilisateur [2017]


Sujet :

Administration SQL Server

  1. #1
    Membre habitué Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 367
    Points : 191
    Points
    191
    Par défaut Créer un schéma par utilisateur
    Bonjour,

    Je cherche depuis quelques temps à créer une base de données avec un schéma par utilisateur, où il a un accès complet aux structures, et un accès en lecture seule pour tout les autres utilisateurs

    Je crée mon utilisateur tel quel

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE DATABASE TEST
    USE TEST
    CREATE USER [<USERNAME>] FOR LOGIN [<USERNAME>]
    CREATE ROLE [role_<USERNAME>] AUTHORIZATION [<USERNAME>]
    CREATE SCHEMA [data_<USERNAME>] AUTHORIZATION [role_<USERNAME>]
    ALTER USER [<USERNAME>] WITH DEFAULT_SCHEMA=[data_<USERNAME>]
    ALTER ROLE [role_<USERNAME>] ADD MEMBER [<USERNAME>]
    GRANT SELECT ON SCHEMA::[data_<USERNAME>] TO [public]

    Je ne comprends pas pourquoi, je ne peux pas créer de table dans le schéma data_<USERNAME> avec l'utilisateur <USERNAME>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Msg 262, Level 14, State 1, Server <nom>\<instance>, Line 4
    CREATE TABLE permission denied in database 'TEST'.
    Je rate quoi ?

    (EDIT : Faute de frappe quand j'ai recopié le code)

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    on ne sait pas de quel contexte de sécurité vous lancez ces commandes. Admettons que ce soit sa...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    EXECUTE AS LOGIN = 'sa'
     
    CREATE USER [USERNAME] WITHOUT LOGIN;
    GO
    CREATE ROLE [role_USERNAME] AUTHORIZATION [USERNAME];
    GO
    CREATE SCHEMA [schema_USERNAME] AUTHORIZATION [USERNAME]
    GO
    ALTER USER [USERNAME] WITH DEFAULT_SCHEMA=[schema_USERNAME];
    GO
    ALTER ROLE [role_USERNAME] ADD MEMBER [USERNAME]
    GO
    EXECUTE AS USER = 'USERNAME'
    GO
    A ce stade quel sont les privilèges...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT *
    FROM   fn_my_permissions ( 'USERNAME', 'SCHEMA' );
    Aucun et c'est normal car ce n'est pas parce que vous êtes propriétaire d'un schéma SQL que vous êtes aussi propriétaire des objets dans le schéma.

    Il faut donc rajouter au rôle un privilège de haut niveau... Pour savoir lequel et choisir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT *
    FROM   sys.fn_builtin_permissions('SCHEMA')
    Résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    permission_name
    --------------------
    SELECT
    INSERT
    UPDATE
    DELETE
    REFERENCES
    EXECUTE
    CREATE SEQUENCE
    VIEW CHANGE TRACKING
    VIEW DEFINITION
    ALTER
    TAKE OWNERSHIP
    CONTROL
    Vous constaterez que dans cette liste ne figure aucune possibilité de DDL (CREATE / ALTER / DROP...) et c'est bien normal car un schéma SQL n'a rien à voi avec une base de données et on a besoin de faire de l'intégrité référentielles (FOREIGN KEY) en cloisonnant le DDL dans un schéma ce serait impossible.

    Donc vous faites fausse route !

    Que voulez vous faire exactement ?

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre habitué Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 367
    Points : 191
    Points
    191
    Par défaut
    Un client a créé une base de données sur son serveur, et souhaiterais avoir un moyen de permettre aux utilisateurs autorisés d'avoir un schéma par utilisateur

    Le but est que toute personne puisse lire tout les schémas, mais que seule une personne puisse avoir les accès DDL et écriture sur le schéma en question

    Ils n'ont pas donné plus de détails sur ce qu'ils veulent faire derrière

    Accessoirement, ils ont un compte avec des droits d'administration sur le serveur, mais ce n'est pas le login sa (je n'ai pas plus de détails n'ayant pas d'accès à leur serveur)

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    Pour le schéma utilisateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    GRANT SELECT, 
          INSERT,
          UPDATE,
          DELETE,
          REFERENCES,
          EXECUTE
       ON SCHEMA::Schema_utilisateur
       TO utilsateur;
    Pour tous les autres utilisateurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    GRANT SELECT, 
          EXECUTE
       TO utilsateur;
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre habitué Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 367
    Points : 191
    Points
    191
    Par défaut
    Merci je vais tester, voir si ça leur convient

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer une instance ou un schéma par application ?
    Par Naleo dans le forum Administration
    Réponses: 5
    Dernier message: 12/10/2012, 13h28
  2. Réponses: 0
    Dernier message: 15/11/2011, 18h57
  3. Créer un fichier modifiable par utilisateur limité
    Par basile238 dans le forum Windows
    Réponses: 5
    Dernier message: 25/01/2009, 16h48
  4. Trouver les fichiers par utilisateurs
    Par calfater dans le forum Windows XP
    Réponses: 2
    Dernier message: 11/10/2005, 17h30
  5. Créer un réseau par Internet
    Par FoxDeltaSierra dans le forum Administration
    Réponses: 4
    Dernier message: 23/09/2005, 17h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo