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 :

Visualisation impossible information_schema.columns Column_Defaut


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 107
    Par défaut Visualisation impossible information_schema.columns Column_Defaut
    Bonjour

    Je récupère la valeur par défaut des champs d'une table sans problème avec mon compte Administrateur en utilisant la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Table_Name,Column_Name,Column_Default
    FROM information_schema.columns
    or avec un compte moins privilégié ma colonne Column_Dafault reste nulle !

    Il y a donc une question de droit, mais je ne vois pas où intervenir.

    Merci pour vos lumières.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 107
    Par défaut infos supplémentaire
    En fait, j'ai constaté sur mes bases, avec le même compte Admin (membre de sysadmin) que je n'obtenais pas le même résultat avec la requête suivante :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT TABLE_CATALOG,TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME, ORDINAL_POSITION,
    		COLUMN_DEFAULT,IS_NULLABLE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,
    		ident_seed((SELECT distinct table_name FROM information_schema.columns as S2 WHERE table_name=S.table_name)) as Increment,
    		(SELECT Name FROM syscolumns WHERE OBJECT_NAME(id)=S.Table_name and COLUMNPROPERTY( id ,name, 'IsIdentity') = 1)  as ColonneIdentite
    FROM Annuaire.information_schema.columns as S

  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 998
    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 998
    Billets dans le blog
    6
    Par défaut
    IDENTITY n'a rien à voir avec une colonne par défaut.... C'est une propriété de colonne, pas une contrainte.

    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
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 107
    Par défaut précisions sur mon problème
    Pour la colonne Identity, j'ai parfaitement conscience que ce n'ai pas une notion de defaut.
    Ici la requête que je donnais montre comment je récupére la valeur COLUMN_DEFAULT
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT TABLE_CATALOG,TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME, ORDINAL_POSITION,
    		COLUMN_DEFAULT,IS_NULLABLE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH
    FROM information_schema.columns
    where TABLE_NAME='HabilitaSTIC'

    Avec un compte SQL, j'ai les valeurs par défaut, et pas avec l'autre !!

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 107
    Par défaut la solution
    Mon problème n'intéressant pas grand monde, j'ai du chercher (longtemps):

    En sql 2000, il n'y avait pas de restriction de visualisation.
    Mais à partir de 2005 (par souci de sécurité), des restrictions ont été mises en place.

    trouvé sur http://msdn.microsoft.com/fr-fr/library/ms187113.aspx
    Résumé fiche:
    Dans les versions antérieures de SQL Server, les métadonnées de tous les objets d'une base de données sont visibles par tous les membres du rôle public. Autrement dit, tout utilisateur connecté à une instance de SQL Server peut voir les métadonnées de chaque objet du serveur, même celles des objets sur lesquels l'utilisateur n'a aucun droit.

    Dans SQL Server 2005 et versions ultérieures, la visibilité des métadonnées est limitée aux éléments sécurisables qu'un utilisateur détient ou pour lesquels des autorisations lui ont été accordées. Par exemple, la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT name, object_id FROM sys.tables WHERE name = 'myTable'
    )retourne une ligne si l'utilisateur bénéficie d'une autorisation telle que SELECT ou INSERT sur la table myTable.

    Mon action réalisée:
    même si le compte sql a déja accès en lecture à la plupart des tables (grant SELECT) je ne peux pourtant pas plus visualiser les valeurs par défaut !!
    Plutôt que de donner le droit (Afficher la définition) table par table à mon compte sql, je le donne au niveau de la base. (il peut être défini au niveau serveur, base, schéma et table)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    USE MaBase
    GRANT VIEW DEFINITION  TO MonCompteSQL
    GO
    Maintenant solutionné.

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

Discussions similaires

  1. Pb avec describe ou INFORMATION_SCHEMA.COLUMNS
    Par bronon dans le forum Requêtes
    Réponses: 4
    Dernier message: 29/05/2013, 11h46
  2. Réponses: 0
    Dernier message: 01/10/2009, 18h02
  3. Impossible de visualiser le noeud racine d'un TreeView
    Par drapa7 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 20/04/2009, 14h13
  4. [Visual Editor] Impossible de visualiser ma vue
    Par tatemilio2 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 08/11/2006, 10h13
  5. Réponses: 6
    Dernier message: 31/10/2006, 14h42

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