OVH Cloud OVH Cloud

Permission denied on column

8 réponses
Avatar
bakelli
Bonjour à tous,

Jai une table matériel avec des champs :
Code, N série, Matricule,position, N facture

Deux utilisateur x1 et x2
Comment faire pour autoriser :

- X1 peut accéder uniquement aux champs : Matricule, Position
- X2 peut accéder uniquement aux champs : Matricule, N facture

Sans avoir le message suivant quand j’ouvre la table avec l’utilisateur
X1:
---------------------------
Erreur
---------------------------
SELECT permission denied on column '[N Facture]' of object 'MATERIEL',
database 'GestionMateriel', owner 'dbo'
---------------------------
OK
---------------------------
Grand Merci d’avance

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net

8 réponses

Avatar
Romelard Fabrice [MVP]
Bonjour,

Cela peut être fait par des vues je pense.
Vous n'avez alors plus qu'à donner les droits sur la vue adaptée à votre
utilisateur.

--
Cordialement.

Romelard Fabrice [MVP]

"bakelli" a écrit dans le message de news:

Bonjour à tous,

Jai une table matériel avec des champs :
Code, N série, Matricule,position, N facture

Deux utilisateur x1 et x2
Comment faire pour autoriser :

- X1 peut accéder uniquement aux champs : Matricule, Position
- X2 peut accéder uniquement aux champs : Matricule, N facture

Sans avoir le message suivant quand j'ouvre la table avec l'utilisateur
X1:
---------------------------
Erreur
---------------------------
SELECT permission denied on column '[N Facture]' of object 'MATERIEL',
database 'GestionMateriel', owner 'dbo'
---------------------------
OK
---------------------------
Grand Merci d'avance

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net




Avatar
SQLpro [MVP]
bakelli a écrit :
Bonjour à tous,

Jai une table matériel avec des champs :
Code, N série, Matricule,position, N facture

Deux utilisateur x1 et x2
Comment faire pour autoriser :

- X1 peut accéder uniquement aux champs : Matricule, Position
- X2 peut accéder uniquement aux champs : Matricule, N facture



Soit utiliser une vue qui restreint l'accès à certaines colonnes

Soit créer de nouveaux utilisateurs SQL (et leurs connexions associées)
et faire un GRANT SELECT en énumérant les colonnes.

Lisez l'article que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/sqlaz/dcl/#L2.3.2

Au passage un conseil :
vos noms de colonne ne respectent pas le norme SQL qui veut que
"
Un nom d'objet (table, colonne, contrainte, vue...) doit avoir les
caractéristiques suivantes :

* ne pas dépasser 128 caractères
* commencer par une lettre
* comprendre uniquement les caractères suivants [ 'A' .. 'Z'] U
['a' .. 'z'] U [ '0' .. '1'] U [ '_' ]
* un nom d'objet ne peut pas être un mot réservé de SQL sauf à être
utilisé avec des guillemets
"

La présence de blancs et pire encore celle d'accent vous causera
probablement de gros ennuis dans l'écriture de vos requêtes, et dans
l'utilisations d'outils tiers (reporting par exemple).

A +



Sans avoir le message suivant quand j’ouvre la table avec l’utilisateur X1:
---------------------------
Erreur
---------------------------
SELECT permission denied on column '[N Facture]' of object 'MATERIEL',
database 'GestionMateriel', owner 'dbo'
---------------------------
OK
---------------------------
Grand Merci d’avance





--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
bakelli
Et comme je suis un vrai débutant en Sql Serveur es que c'est possible
svp de me donner un petit exemple parce que j’ai essaie de faire un
GRANT SELECT sur les colonnes. Mais sa marche pas

Merci pour les remarques ^^

NB : J’utilise le composant DataSet de ADO avec le fournisseur «
Microsoft OLE DB Provider for SQL Server » pour accéder à la table

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Avatar
Med Bouchenafa
Comme déjà dit, il est beaucoup plus facile d'ouvrir son Query Analyzer et
de lancer la commande GRANT.
Mais bon, si tu tiens absolument à passer par ADO.NET, fait une recherche
Internet sur la classe SqlClientPermission
Avec un peu de chance tu devrais trouver un exemple tout prêt

--
Bien cordialement
Med Bouchenafa

"bakelli" a écrit dans le message de news:

Et comme je suis un vrai débutant en Sql Serveur es que c'est possible svp
de me donner un petit exemple parce que j'ai essaie de faire un GRANT
SELECT sur les colonnes. Mais sa marche pas

Merci pour les remarques ^^

NB : J'utilise le composant DataSet de ADO avec le fournisseur « Microsoft
OLE DB Provider for SQL Server » pour accéder à la table

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net




Avatar
bakelli
Bonjour,

Svp esque c'est possible de me dire comment faire avec Query Analyser
pour mon exemple merci:

Jai une table matériel avec des champs :
Code, N_serie, Matricule,position, N_facture

Deux utilisateur x1 et x2
Comment faire pour autoriser :

- X1 peut accéder uniquement aux champs : Matricule, Position
- X2 peut accéder uniquement aux champs : Matricule, N_facture

Sans avoir le message suivant quand j’ouvre la table avec l’utilisateur
X1:

---------------------------
Erreur
---------------------------
SELECT permission denied on column '[N Facture]' of object 'MATERIEL',
database 'GestionMateriel', owner 'dbo'
---------------------------
OK
---------------------------
Merci d’avance


--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Avatar
Arnaud CLERET
Il me semble que le mieux dans ce type de situation est d'offrir une
procédure stockée ou vue à chacun de vos utilisateur et d'autoriser chaque
utilisateur seulement sur la procédure ou vue à laquelle il a accès. Ce qui
vous permet en plus d'enlever les autorisations de chaque utilisateur
directement sur la table afin de protéger vos données de toute requête
malveillante.

--
arno - http://www.dotnetguru2.org/acleret/

"bakelli" a écrit dans le message de news:

Bonjour,

Svp esque c'est possible de me dire comment faire avec Query Analyser pour
mon exemple merci:

Jai une table matériel avec des champs :
Code, N_serie, Matricule,position, N_facture

Deux utilisateur x1 et x2
Comment faire pour autoriser :

- X1 peut accéder uniquement aux champs : Matricule, Position
- X2 peut accéder uniquement aux champs : Matricule, N_facture

Sans avoir le message suivant quand j'ouvre la table avec l'utilisateur
X1:

---------------------------
Erreur
---------------------------
SELECT permission denied on column '[N Facture]' of object 'MATERIEL',
database 'GestionMateriel', owner 'dbo'
---------------------------
OK
---------------------------
Merci d'avance


--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net




Avatar
bakelli
Juste une dernière question svp
Jai une table MATERIEL j’ai réalisé deux vue : Vue1, Vue2
Utilisateur X1 peux accéder à la vue : Vue1
Utilisateur X2 peux accéder à la vue : Vue2

J'utilise les composants ADO pour accéder à la base de données
Comment connecter ADODataSet à la vue qui à été offerte à
l’utilisateur qui à lancer le programme

Exemple:
X1 à lancer le programme ADODataSet sera orienter vers Vue1


Merci beaucoup




--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Avatar
SQLpro [MVP]
bakelli a écrit :
Juste une dernière question svp
Jai une table MATERIEL j’ai réalisé deux vue : Vue1, Vue2
Utilisateur X1 peux accéder à la vue : Vue1
Utilisateur X2 peux accéder à la vue : Vue2

J'utilise les composants ADO pour accéder à la base de données
Comment connecter ADODataSet à la vue qui à été offerte à l’utilisateur
qui à lancer le programme

Exemple:
X1 à lancer le programme ADODataSet sera orienter vers Vue1



se connecter avec le bon utilisateur. C'est tout !

A +



Merci beaucoup








--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************