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 :

Metadata des tables


Sujet :

Développement SQL Server

  1. #1
    Membre éclairé
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 423
    Par défaut Metadata des tables
    Bonjour,

    J'ai trouvé une pk dans master qui permet de récupérer les meta des procedures stockées ou les vues de ma base.

    i.e.
    sp_helptext maPk

    Mais je n'arrive pas à trouver un moyen pour obtenir la même chose pour les tables...

    En sachant que je travaille sur des sql server 2005 à 2008 R2 et que je développe sous delphi avec les objects zeos (et ado si nécessaire).

    Merci pour votre aide,

  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
    22 010
    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 : 22 010
    Billets dans le blog
    6
    Par défaut
    Utlisez déjà les vues d'information de schéma qui sont la norme SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT * FROM INFORMATION_SCHEMA.TABLES
     
    SELECT * FROM INFORMATION_SCHEMA.COLUMNS
     
    SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
    SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
    SELECT * FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS
     
    SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    SELECT * FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
     
    SELECT * FROM INFORMATION_SCHEMA.VIEWS
    SELECT * FROM INFORMATION_SCHEMA.VIEW_COLUMN_USAGE
    SELECT * FROM INFORMATION_SCHEMA.VIEW_TABLE_USAGE
    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 éclairé
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 423
    Par défaut
    Merci SqlPro,

    mais si ceci me donne toutes les informations pour générer un script,
    c'est plutôt le script que je cherche à récupérer du style :


    CREATE TABLE [dbo].[maTbl](
    [ch1] [varchar](30) NOT NULL,
    [ch2] [datetime] NOT NULL,

    etc...

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Si vous devez faire cela très rarement, et pour une table, il vous suffit de cliquer droit sur la table à scripter dans l'explorateur d'objets (F8), puis de choisir "Scripter la table en tant que" > "CREATE vers ...".

    De la même façon, on obtient le script de plusieurs tables avec les "Détails de l'explorateur d'objets" en cliquant sur le noeud tables > F7 > en sélectionnant les tables à scripter, "CREATE vers ...".

    Sinon, voyez le billet que j'ai écrit à ce sujet

    Ensuite il vous suffit de créer la procédure stockée dans la base de données master, et de la marquer la procédure comme objet système pour pouvoir l'utiliser dans n'importe quelle autre base de données de la même instance de SQL Server.
    Pour cela, un autre billet.

    Dans aucun de ces cas vous n'aurez le script de création des index non-cluster de la table, ni ses triggers éventuels.

    @++

  5. #5
    Membre éclairé
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 423
    Par défaut
    Merci elsuket,

    ça je m'en sert toute la journée, c'est par sql dont j'en ai besoin.

    L'objectif est justement de pouvoir récupérer, comme dans ssms les scripts de création des metas.

    Pour ce qui concerne code que vous avez écris, je suis persuadé qu'il est parfait, mais je suis certain qu'il est possible de récupérer les metas d'un object et même de la base complète.

    Mais de toute façon, merci pour votre attention à ce post.

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Que vous faut-il exactement ?

    @++

  7. #7
    Membre éclairé
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 423
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Que vous faut-il exactement ?

    @++
    Bonjour,

    eh bien, j'ai besoin de pouvoir récupérer via une commande sql, (soit une pk ou autre), le script de génération des metas des objects, tables, vues, pk, index dans mon code de programmation sous delphi, donc soit en passant par zeos, soit par ADO.

    Ce que je peux faire en lancant la pk sp_helptext nompk, qui fonctionne pour les vues et les procédures stockées, mais pas pour les tables ni les index.

    merci pour votre aide.

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    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 : 22 010
    Billets dans le blog
    6
    Par défaut
    PK signifie Primary Key... QU'est ce que c'est que cette PK intitulée sp_helptext ?? Commencez à parler clairement et pas en SMS !

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

  9. #9
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    En fait je pense que par pk, castorcharly signifie procédure stockée.

    Ce que je peux faire en lancant la pk sp_helptext nompk, qui fonctionne pour les vues et les procédures stockées, mais pas pour les tables ni les index.
    Ceci est normal puisque le code des modules T-SQL (procédures stockées, fonctions, triggers, et vues) sont stockés dans les tables de métadonnées de SQL Server, ce qui n'est pas le cas des objets physiques (tables, index, ...)

    Votre but est-il :

    - de lister tous les objets d'une base de données, et de proposer par votre application un script de création de l'objet ?
    - de scripter tous les objets de la base de données comme une tâche récurrente (tout le code de création des objets est exporté dans un/des fichier de script) ?

    @++

  10. #10
    Membre éclairé
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 423
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    PK signifie Primary Key... QU'est ce que c'est que cette PK intitulée sp_helptext ?? Commencez à parler clairement et pas en SMS !

    A +
    PK est l'abréviation pour une procédure stockée, abréviation courament utilisée par les développeurs, désolé si ce n'est pas parlant, j'utiliserai sp comme dans sql server.

    sp_heptext est une sp système fournie dans la db master à l'usage des développeurs, entre autre.

  11. #11
    Membre éclairé
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 423
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Ceci est normal puisque le code des modules T-SQL (procédures stockées, fonctions, triggers, et vues) sont stockés dans les tables de métadonnées de SQL Server, ce qui n'est pas le cas des objets physiques (tables, index, ...)

    Votre but est-il :

    - de lister tous les objets d'une base de données, et de proposer par votre application un script de création de l'objet ?
    - de scripter tous les objets de la base de données comme une tâche récurrente (tout le code de création des objets est exporté dans un/des fichier de script) ?

    @++
    Mon objectif est de développer un applicatif me permettant de créer les scripts de création des différents objects disponibles dans une base.

    Comme je vous l'ai dit, la sp_helptext avec comme param soit le nom d'une procedure, soit le nom d'un vue me donne satisfaction.

    Je peux donc par interrogation sql de cette proc (dans mon programme), récupérer les lignes me permettant de reconstruire un script de création, à l'identique de ce qui est déclaré dans la base.

    Il me manque la même chose, pour les tables.

    Je comprends bien sur, que le stockage des informations concernant les scripts des procédures stockées doit être fait d'une manière tout à fait différente pour les tables, j'espèrai seulement, qu'il existait une fonction permettant d'extraire les metas object par object, comme celà existe dans d'autre moteur ainsi qu'une fonction renvoyant l'extraction pour la totalité des objects de la base.

    Je serai d'ailleurs très étonné que celà n'existe pas, mais le nombre de fonctions, procédures, étant très fournis dans SQL serveur, il est difficile de tout trouver dans les docs et aide.
    Raison de ma demande ici, si qq. un a déjà trouvé.

    Merci

  12. #12
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    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 : 22 010
    Billets dans le blog
    6
    Par défaut
    Non, une telle fonction n'existe pas car une table n'a pas de sens en tant qu'objet indépendant...
    Ne serait-ce que pour les contraintes FK par exemple !

    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. remplir des tables a partir de fichiers TXT
    Par jeremie dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 10/03/2004, 14h50
  2. [Volume des tables et performance]
    Par kase74 dans le forum InterBase
    Réponses: 9
    Dernier message: 09/03/2004, 14h14
  3. Afficher noms des tables d'une base
    Par jeff37 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/01/2004, 16h00
  4. Liste des tables d'une bases de données spécifique
    Par faridos23 dans le forum Requêtes
    Réponses: 3
    Dernier message: 26/08/2003, 22h20
  5. noms des tables d'une base
    Par molto dans le forum SQL
    Réponses: 2
    Dernier message: 17/03/2003, 22h14

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