Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/06/2011, 09h10   #1
Membre du Club
 
Homme
Chef de projet
Inscription : février 2009
Messages : 137
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 56

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

Informations forums :
Inscription : février 2009
Messages : 137
Points : 67
Points : 67
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,
castorcharly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 10h21   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 954
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 954
Points : 17 774
Points : 17 774
Utlisez déjà les vues d'information de schéma qui sont la norme SQL :
Code :
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
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/06/2011, 10h53   #3
Membre du Club
 
Homme
Chef de projet
Inscription : février 2009
Messages : 137
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 56

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

Informations forums :
Inscription : février 2009
Messages : 137
Points : 67
Points : 67
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...
castorcharly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 13h52   #4
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 669
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

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

Informations forums :
Inscription : janvier 2005
Messages : 4 669
Points : 8 729
Points : 8 729
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.

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 15h11   #5
Membre du Club
 
Homme
Chef de projet
Inscription : février 2009
Messages : 137
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 56

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

Informations forums :
Inscription : février 2009
Messages : 137
Points : 67
Points : 67
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.
castorcharly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 16h50   #6
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 669
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

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

Informations forums :
Inscription : janvier 2005
Messages : 4 669
Points : 8 729
Points : 8 729
Que vous faut-il exactement ?

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 08h30   #7
Membre du Club
 
Homme
Chef de projet
Inscription : février 2009
Messages : 137
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 56

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

Informations forums :
Inscription : février 2009
Messages : 137
Points : 67
Points : 67
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.
castorcharly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 10h15   #8
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 954
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 954
Points : 17 774
Points : 17 774
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
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 10h53   #9
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 669
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

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

Informations forums :
Inscription : janvier 2005
Messages : 4 669
Points : 8 729
Points : 8 729
En fait je pense que par pk, castorcharly signifie procédure stockée.

Citation:
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) ?

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 14h22   #10
Membre du Club
 
Homme
Chef de projet
Inscription : février 2009
Messages : 137
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 56

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

Informations forums :
Inscription : février 2009
Messages : 137
Points : 67
Points : 67
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.
castorcharly est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 21/06/2011, 14h37   #11
Membre du Club
 
Homme
Chef de projet
Inscription : février 2009
Messages : 137
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 56

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

Informations forums :
Inscription : février 2009
Messages : 137
Points : 67
Points : 67
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
castorcharly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 23h37   #12
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 954
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 954
Points : 17 774
Points : 17 774
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
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h20.


 
 
 
 
Partenaires

Hébergement Web