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

MS SQL Server Discussion :

Description des colonnes d'une table


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Par défaut Description des colonnes d'une table
    Bonjour à tous,

    Je souhaiterais récupérer les informations suivantes pour une table de ma base de donnée :

    Le nom de la colonne
    Le type de la colonne (datetime, varchar ...)
    La taille maximum de la colonne
    Le type de clé (primaire ou non)
    Le type d'index (unique ou non, sans)

    Avec MySql je fais un simple :

    Avec Sqlserver j'ai trouvé la syntaxe suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM information_schema.columns WHERE table_name = 'nom_table'
    Malheureusement cette requête ne me précise pas le type de clé et d'index.

    Je remercie par avance celui ou celle qui pourra me dépanner.

    Précision : je réalise mes tests avec SqlServer 2005.

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 58
    Par défaut
    je c pas si ca vas rependre a ton probleme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    SELECT TOP 0 * INTO ##Table_Temporaire FROM  
    (
           --la requête à exécuter ici
           SELECT * FROM Ma_Table
    ) 
    AS T 
     
     
    SELECT 
    ( 
    SELECT COLUMN_NAME,DATA_TYPE --, autre champ,...
    FROM tempdb.INFORMATION_SCHEMA.COLUMNS 
    WHERE table_name = '##Table_Temporaire'  
    FOR XML RAW
    ) AS Retultat_xml
     
     
    DROP TABLE ##Table_Temporaire
    si c'est la cas alors on peut dire que la solution a ta questions est ma question (voir ici )

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Par défaut
    Bonjour,

    Citation Envoyé par s.toubal Voir le message
    je c pas si ca vas rependre a ton probleme :
    Cette requête (associé au fichier INFORMATION_SCHEMA.COLUMNS) ne donne aucune indication sur les clés et les types d'index. Merci quand même.

  4. #4
    Membre Expert Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Par défaut
    Ca serait pas :

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Par défaut
    Bonjour,

    Citation Envoyé par Tober Voir le message
    Ca serait pas :
    Je ne souhaiterais pas passer par une procédure stockée, n'est-il pas envisageable de l'obtenir par autre moyen ?

  6. #6
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    Citation Envoyé par e.haefele Voir le message
    Bonjour,
    Je ne souhaiterais pas passer par une procédure stockée, n'est-il pas envisageable de l'obtenir par autre moyen ?
    Qu'est ce qui te gène dans l'utilisation d'une procédure stockée ? Qu'est ce que tu veux faire exactement de ces infos ? c'est quoi le but ?
    Etienne ZINZINDOHOUE
    Billets-Articles

  7. #7
    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
    DESCRIBE n'existe pas en SQL. C'est une merdouille de MySQL. A l'époque MySQL n'était pas capable de faire des procédures stockées, donc ils ont inventé des commandes pseudo SQL pour faire la même chose qu'une proc stock.

    MS SQL Server ayant depuis 20 ans les procédures stockées, fournit de multiples procédures pour décrire en long en large et en travers les objets d'une base....

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

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Par défaut
    Bonjour,

    Citation Envoyé par zinzineti Voir le message
    Qu'est ce qui te gène dans l'utilisation d'une procédure stockée ? Qu'est ce que tu veux faire exactement de ces infos ? c'est quoi le but ?
    Le but est d'opérer automatiquement une modification de la structure de table en m'appuyant sur une description personnelle de la structure de cette table. Exemple : ma description indique que telle colonne à un index unique, j'aimerais (par programmation) vérifier si en production cette rubrique est déjà indexée ou non et le cas échéant ajouter l'index manquant sur la colonne.

    Pourquoi je ne veux pas utiliser une procédure stockée, parce que je n'arrive pas à l'exploiter par programmation. Je dois avouer que je suis assez novice mais lorsque j'exécute ma requête, je ne récupère qu'une ligne avec les colonnes name, owner, type et created_datetime mais pas le reste. De plus comment puis-je faire de façon certaine la différence entre une clé primaire, un index unique et un index avec doublons ? Si on m'apporte la réponse à cette question, la procédure stockée suivante pourrait sans doute convenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sp_helpindex 'nom_table'
    Peut-être que ma démarche est complètement loufoque et là aussi finalement votre avis m'intéresse.

  9. #9
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    écris donc une requête avec les vues suivantes :
    sys.all_columns, INFORMATION_SCHEMA.COLUMNS et sys.indexes
    Etienne ZINZINDOHOUE
    Billets-Articles

  10. #10
    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
    Citation Envoyé par e.haefele Voir le message
    Bonjour,

    Le but est d'opérer automatiquement une modification de la structure de table en m'appuyant sur une description personnelle de la structure de cette table. Exemple : ma description indique que telle colonne à un index unique, j'aimerais (par programmation) vérifier si en production cette rubrique est déjà indexée ou non et le cas échéant ajouter l'index manquant sur la colonne.

    ...

    Peut-être que ma démarche est complètement loufoque et là aussi finalement votre avis m'intéresse.
    Un peu loufoque... Vous auriez dû commencer par le commencement en nous disant ce que vous voulez faire... Nous aurions pu vous orienter.

    C'est c'est pour "tracer" les modifications de structure (index compris) entre une base et l'autre, il existe au moins 5 moyens différents de l'automatiser
    - réplication transactionnelle
    - trigger DDL
    - Change Tracking
    - CDC.
    - tableDiff
    ...

    Donc, formulez votre demande de manière fonctionnelle et on vous donnera la solution la plus adaptée.

    Donnez aussi quelques exemples.

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

Discussions similaires

  1. [VB6 - Access]Récupérer description des champs d'une table
    Par New dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/11/2014, 14h53
  2. Réponses: 1
    Dernier message: 22/12/2005, 09h03
  3. [D-7][PostGres]Récuperer l'ensemble des colonnes d'une table
    Par Escandil dans le forum Bases de données
    Réponses: 1
    Dernier message: 21/10/2005, 09h17
  4. [JDBC]Nom des colonnes d'une table
    Par Guybrush dans le forum JDBC
    Réponses: 6
    Dernier message: 08/09/2004, 18h28
  5. [Firebird 1.5] nom des colonnes d'une table
    Par c0rwyn dans le forum SQL
    Réponses: 4
    Dernier message: 03/09/2004, 14h44

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