[ SQL serveur ] - récuperer en SQL la structure d'une base / d'une ...

- récuperer en SQL la structure d'une base / d'une ... [ SQL serveur ] - SQL/NoSQL - Programmation

Marsh Posté le 28-03-2003 à 14:13:44    

d'une table.
s'possib' ?  
comment qu'on fait ? [:xx_xx]
 
merci d'avance :)

Reply

Marsh Posté le 28-03-2003 à 14:13:44   

Reply

Marsh Posté le 28-03-2003 à 14:38:42    

dans l'Enterprise Manager, tu vas sur ta table et tu passes en design mode.  
Dans les menus disponibles, tu as Generate Scripts.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 28-03-2003 à 15:00:29    

ca c'est pour avoir un dump de la base nan ?
moi ce dont j'ai besoin c'est :  
 
me connecter en SQL sur une base.
recuperer la liste des tables en SQL.
recuperer la structure d'une table.
 
tout ca pour concevoir une classe d'encapsulation de SQL serveur ds un module de gestion de BDD. :)

Reply

Marsh Posté le 28-03-2003 à 15:12:17    

faudrait voir avec la librairie Microsoft SQL DMO, je suis pas certain mais on pourrait bien récupérer des scripts avec cette lib.  En tout cas, tu devras certainement passer par une librairie spécifique à SQL Server.  Tu codes en quoi?


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 28-03-2003 à 15:14:04    

drasche a écrit :

faudrait voir avec la librairie Microsoft SQL DMO, je suis pas certain mais on pourrait bien récupérer des scripts avec cette lib.  En tout cas, tu devras certainement passer par une librairie spécifique à SQL Server.  Tu codes en quoi?


 
merci pour les infos
 
en php

Reply

Marsh Posté le 28-03-2003 à 15:41:33    

SQLDMO oui mais pour VBscript...sniiiif
 
qqun a une idée ?

Reply

Marsh Posté le 28-03-2003 à 15:59:12    

trouvé, missi les tables sytème

Reply

Marsh Posté le 28-03-2003 à 16:04:03    

Entreprise Manager
Tu cliques droit sur ta base
Toutes les tâches - générer script SQL
onglet général - Afficher tout
=>Toutes les tables
onglet option
=> Ok tu entres le nom de ton fichier
et c tout bon !

Reply

Marsh Posté le 28-03-2003 à 19:43:56    

alors, c'est très simple :
 
il faut taper dans les tables système.
 
par contre, leur schéma est assez complexe, je ne l'ai pas encore totalement décrypté ;)
 
liste des tables :
 

Code :
  1. SELECT *
  2. FROM   dbo.sysobjects
  3. WHERE  (xtype = 'U') AND (name <> 'dtproperties')


 
liste des champs regroupés par tables, avec leurs champs typés et tout :
 

Code :
  1. Code recommandé par SQL Server :
  2. SELECT     o.name AS TABLENAME, o.crdate AS DATE_CREA, o.refdate AS DATE_UPD, col.colid AS COL_NUM, col.name AS FIELD_NAME, t.name AS TYPE,
  3.                       col.length AS LENGTH
  4. FROM         dbo.syscolumns col INNER JOIN
  5.                       dbo.sysobjects o ON col.id = o.id INNER JOIN
  6.                       dbo.systypes t ON col.xtype = t.xtype
  7. WHERE     (o.xtype = 'U') AND (o.name <> 'dtproperties')
  8. ORDER BY o.name, col.colid
  9. Code lisible :D
  10. SELECT o.name AS TABLENAME, o.crdate AS DATE_CREA, o.refdate AS DATE_UPD, col.colid AS COL_NUM, col.name AS FIELD_NAME, t.name AS TYPE, col.length AS LENGTH
  11. FROM dbo.syscolumns col, dbo.systypes t,dbo.sysobjects o
  12. WHERE     (o.xtype = 'U') AND (o.name <> 'dtproperties')
  13. AND col.id = o.id
  14. AND col.xtype = t.xtype
  15. ORDER BY o.name, col.colid


Message édité par MagicBuzz le 28-03-2003 à 19:44:51
Reply

Marsh Posté le 28-03-2003 à 19:46:12    

Y'a aussi des tables pour les indexes, les contraintes, les dépendances, les procédures stockées... C'est un joyeux bordel, mais là t'as déjà le principal ;)

Reply

Marsh Posté le 28-03-2003 à 19:46:12   

Reply

Marsh Posté le 28-03-2003 à 19:58:42    

MagicBuzz a écrit :

alors, c'est très simple :
 
il faut taper dans les tables système.
 
par contre, leur schéma est assez complexe, je ne l'ai pas encore totalement décrypté ;)
 


T'as pas plutôt des belles vues toute faites et qui répondent à tes besoins comme dans Oracle ?¿?

Reply

Marsh Posté le 28-03-2003 à 19:59:58    

Non, y'a que ces tables (mais l'avantage, c'est qu'il y a tout :D)


Message édité par MagicBuzz le 28-03-2003 à 20:00:16
Reply

Marsh Posté le 30-03-2003 à 16:27:26    

meri magicbuzz, en fait vendredi soir (sic) j'avais trouvé comment récupérer certaines infos ds les tables sytèmes.
par contre, j'ai pas trouvé comment récupérer une info dont j'ai absoluement besoin : savoir si un champs est une clé primaire.
j'ai regardé ds les tables indexes mais y a meme une entrée pour les champs non clés...donc je sais pas trop ou est rangée l'info.
t'as une idée ? [:xx_xx]
 
en tout cas merci beaucoup et bonne fin de wikend :)

Reply

Marsh Posté le 31-03-2003 à 09:43:44    

[:karochky]

Reply

Marsh Posté le 31-03-2003 à 13:59:07    

et dans l'absolu personne sait ?  [:tomawack]

Reply

Marsh Posté le 02-04-2003 à 20:00:46    

t'as regardé dans sysconstraints ?

Reply

Marsh Posté le 02-04-2003 à 20:04:33    

Ouais, nan, c'est pas dedans...
 
Mais dis-donc, t'as pas beaucoup cherché :sarcastic:
 

SELECT     *
FROM         dbo.sysindexkeys


 
Ho, toutes les clé primaires ! :sarcastic: ;)
 

SELECT     *
FROM         dbo.sysforeignkeys


Ho, toutes les clés étrangères !

Reply

Marsh Posté le 03-04-2003 à 11:37:33    

MagicBuzz a écrit :

Ouais, nan, c'est pas dedans...
 
Mais dis-donc, t'as pas beaucoup cherché :sarcastic:
 

SELECT     *
FROM         dbo.sysindexkeys


 
Ho, toutes les clé primaires ! :sarcastic: ;)
 

SELECT     *
FROM         dbo.sysforeignkeys


Ho, toutes les clés étrangères !


 
moué sauf que les colonnes sont pas référencées par un id unique (ou alors l'est pas ds la table syscolumns) et donc a partir de la je vois mal comment récup des infos d'une table ne contenant que des id.
cependant la procédure privée sp_pkeys marche bien (et le code de la procédure l'est pas glop)
 
merci pour tout les gens

Reply

Marsh Posté le 03-04-2003 à 11:45:13    

c'est une clé double :sarcastic:
 
la première c'est l'ID de la table, la seconde c'est le numéro de colonne dans la table. c'est rigoureusement la même clé que dans syscolumns.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed