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

Développement SQL Server Discussion :

Créer une table avec T-SQL et octroyer privilège


Sujet :

Développement SQL Server

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    en reconversion professionelle
    Inscrit en
    Février 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : en reconversion professionelle

    Informations forums :
    Inscription : Février 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Créer une table avec T-SQL et octroyer privilège
    bonsoir à tous!
    Svp! je voudrais créer une table avec t-T-SQL que j'ai nommé t_controle. Cette table sera utilisé par un utilisateur(pardon pour la répétition des mots) que j'ai nommé "technicien1" à qui je donne le privilège d'enregistrer les véhicules qui passe au contrôle et ces véhicules sont de type "véhicules légers". Ensuite j'ai créé un autre utilisateur nommé "technicien2 qui cette fois-ci a comme privilège d'enregistrer les véhicules de type "lourds". Et je n'y arrive pas!!
    Pourriez vous m'aider svp?
    Aussi, comment créer une procédure stockée et comment sauvegarder à chaud pour une BDD en cours???
    merci bcp pour votre aide chers développeurs.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 201
    Points : 12 778
    Points
    12 778
    Par défaut
    Bonjour,
    Si tu veux donner des droits différents sur des lignes différentes, pour moi la solution est de ne donner aucun droit sur la table, mais de passer par des vues, et de paramétrer les droits sur ces vues.
    Tu peux même si besoin ajouter un trigger "INSTEAD OF" sur chaque vue pour piloter ce qui va ce passer en cas d'insertion/de mise à jour.
    Tu as par exemple une discussion ici qui en parle.
    Et tu as la documentation de Microsoft sur les vues qui te permet d'approfondir le sujet.

    Pour créer une procédure, si tu cherches "sql serveur create procedure" dans ton moteur de recherche préféré, tu vas aussi trouver le lien vers l'aide en ligne.

    Et pour le dernier point, il suffit de faire une sauvegarde, là aussi avec une petite recherche tu vas rapidement trouver la réponse.

    Maintenant si tu bloques sur un point particulier, il faudrait le préciser dans ta question, sinon tu n'auras que des réponses "génériques".

    Tatayo.

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 782
    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 782
    Points : 52 783
    Points
    52 783
    Billets dans le blog
    5
    Par défaut
    Il n'est pas nécessaire de proposer des déclencheurs INSTEAD OF. Les vues suffisent. Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    -- la table :
    CREATE TABLE T_CONTROLE_CTL
    (CTL_ID                INT IDENTITY PRIMARY KEY,
     CTL_NATURE            VARCHAR(16) NOT NULL CHECK (CTL_NATURE IN ('Léger', 'Lourd')),
     CTL_IMMATRICULATION   CHAR(10));
    GO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    -- la vue
    CREATE VIEW V_CONTROLE_CTL
    AS
    SELECT *
    FROM   T_CONTROLE_CTL
    WHERE  CTL_NATURE = CASE USER WHEN 'Technicien1' THEN 'Léger'
                                  WHEN 'Technicien2' THEN 'Lourd'                                    
                        ELSE CTL_NATURE END
    WITH CHECK OPTION;
    GO
    Filtrée automatiquement sur les types de véhicules par rapport à l'utilisateur.
    Notez la clause WITH CHECK OPTION

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    -- les utilisateurs et leurs privilèges
    CREATE USER Technicien1 WITHOUT LOGIN;
    CREATE USER Technicien2 WITHOUT LOGIN;
    GO
     
    GRANT SELECT, INSERT, UPDATE ON V_CONTROLE_CTL TO Technicien1;
    GRANT SELECT, INSERT, UPDATE ON V_CONTROLE_CTL TO Technicien2;
    GO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    -- le test
    EXECUTE AS USER = 'Technicien1'; --> on se fait passer pour un technicien
    INSERT INTO V_CONTROLE_CTL VALUES ('Lourd', '123 AA 456'); 
    --> Les instructions INSERT ou UPDATE ont échoué parce que la vue cible spécifiait WITH CHECK OPTION ou recouvrait une vue spécifiant WITH CHECK OPTION, alors qu'une ou plusieurs lignes résultant de l'opération n'étaient pas qualifiées sous la contrainte CHECK OPTION.
    INSERT INTO V_CONTROLE_CTL VALUES ('Léger', '123 AA 456'); 
    --> c'est réussi
    REVERT; --> on annule le fait de s'être fait passer pour un autre utilisateurs
    CQFD.

    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/ * * * * *

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    en reconversion professionelle
    Inscrit en
    Février 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : en reconversion professionelle

    Informations forums :
    Inscription : Février 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    bonjour à tous !
    J'ai bien compris!
    et encore merci pour l'aide que vous m'avez apporté.
    je vais le tester et vous faire par de la suite.
    merci encore!

Discussions similaires

  1. [D6] Comment créer une table Access en SQL avec ADO ?
    Par Lung dans le forum Bases de données
    Réponses: 7
    Dernier message: 18/09/2007, 15h27
  2. créer une table avec interbase
    Par solidleon dans le forum Bases de données
    Réponses: 3
    Dernier message: 01/11/2006, 15h39
  3. [Conception] Créer une table avec php
    Par freezerhm dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/10/2006, 12h15
  4. Créer une vue avec du SQl dynamique
    Par gghonang2 dans le forum Oracle
    Réponses: 15
    Dernier message: 06/09/2006, 22h03
  5. Créer une table avec SELECT
    Par eric37 dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/08/2006, 00h34

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