Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

QUELQUES REQUETES UTILES POUR INTERROGER LES TABLES SYSTEMES (MSSQL)


Information sur la source

Catégorie :Trucs & Astuces Classé sous : requête, table, system, sqlserver, master Niveau : Initié Date de création : 24/05/2005 Date de mise à jour : 23/12/2008 22:36:37 Vu : 11 297

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

Description

Ce code présente des requetes permettant de lire les tables Syteme SQL SERVEUR.
Pour plus de renseignements sur les colonnes renvoyer (ne pas hésiter à consulter l'aide de MS SQL SERVER)

 

Source

  • --Liste des bases de données de SQL SERVER
  • SELECT * from MASTER.dbo.sysdatabases
  • --Liste des tables utilisateur de SQL SERVEUR
  • SELECT * from dbo.sysobjects
  • WHERE xtype= 'U'
  • --Différentes listes possibles (xtype)
  • --C = Contrainte CHECK
  • --D = Valeur par défaut ou contrainte DEFAULT
  • --F = Contrainte FOREIGN KEY
  • --L = Journal
  • --FN = Fonction scalaire
  • --IF = Fonction table en ligne
  • --P = Procédure stockée
  • --PK = Contrainte PRIMARY KEY (de type K)
  • --RF = Procédure stockée de réplication
  • --S = Table système
  • --TF = Fonction table
  • --TR = Déclencheur
  • --U = Table utilisateur
  • --UQ = Contrainte UNIQUE (de type K)
  • --V = Vue
  • --X = Procédure stockée étendue
  • --Liste des colonnes d'une table
  • SELECT * from dbo.syscolumns
  • --XType est le type de colonne
  • --extrait de la dbo.table systype
  • --Liste des tables utilsteaurs avec leurs colonnes et leurs types
  • SELECT TABLES.name,COLONNES.name, TYPES.name FROM dbo.syscolumns as COLONNES
  • INNER JOIN dbo.sysobjects as TABLES
  • ON TABLES.ID = COLONNES.ID
  • INNER JOIN dbo.systypes AS TYPES
  • ON TYPES.xtype = COLONNES.xtype
  • WHERE TABLES.xtype = 'U'
  • --Liste des colonnes défaut d'une base de données
  • SELECT cols.name as colonne_name, c_obj.name as default_name,t_obj.name as table_name FROM sysobjects t_obj, sysobjects c_obj, syscolumns cols
  • WHERE cols.id = t_obj.id AND c_obj.id = cols.cdefault AND c_obj.xtype = 'D'
--Liste des bases de données de SQL SERVER
SELECT * from MASTER.dbo.sysdatabases 


--Liste des tables utilisateur de SQL SERVEUR
SELECT * from dbo.sysobjects
WHERE xtype= 'U'

--Différentes listes possibles (xtype)
--C = Contrainte CHECK
--D = Valeur par défaut ou contrainte DEFAULT
--F = Contrainte FOREIGN KEY
--L = Journal
--FN = Fonction scalaire
--IF = Fonction table en ligne
--P = Procédure stockée
--PK = Contrainte PRIMARY KEY (de type K)
--RF = Procédure stockée de réplication
--S = Table système
--TF = Fonction table
--TR = Déclencheur
--U = Table utilisateur
--UQ = Contrainte UNIQUE (de type K)
--V = Vue
--X = Procédure stockée étendue


--Liste des colonnes d'une table

SELECT * from dbo.syscolumns
--XType est le type de colonne
--extrait de la dbo.table systype


--Liste des tables utilsteaurs avec leurs colonnes et leurs types
SELECT TABLES.name,COLONNES.name, TYPES.name FROM dbo.syscolumns as COLONNES
INNER JOIN dbo.sysobjects as TABLES 
ON TABLES.ID = COLONNES.ID
INNER JOIN dbo.systypes AS TYPES
ON TYPES.xtype = COLONNES.xtype
WHERE TABLES.xtype = 'U'

--Liste des colonnes défaut d'une base de données

SELECT cols.name as colonne_name, c_obj.name as default_name,t_obj.name as table_name FROM sysobjects t_obj, sysobjects c_obj, syscolumns cols
WHERE cols.id = t_obj.id AND c_obj.id = cols.cdefault AND c_obj.xtype = 'D'

Historique

23 décembre 2008 22:34:58 :
Ajout de la liste des contraintes
23 décembre 2008 22:36:37 :
Ajout de la liste des colonnes avec une contrainte défaut pour une base de données

Commentaires et avis

signaler à un administrateur
Commentaire de coq le 28/05/2005 14:36:47 administrateur CS

Salut,

Tu as remarquer les doublons pour les colonnes nvarchar/sysname avec ta requête :
SELECT TABLES.name,COLONNES.name, TYPES.name FROM dbo.syscolumns as COLONNES
INNER JOIN dbo.sysobjects as TABLES
ON TABLES.ID = COLONNES.ID
INNER JOIN dbo.systypes AS TYPES
ON TYPES.xtype = COLONNES.xtype
WHERE TABLES.xtype = 'U'

exemple : pour une colonne "Non" en nvarchar ça donne :
Table | Nom | nvarchar
Table | Nom | sysname

signaler à un administrateur
Commentaire de nhervagault le 28/05/2005 14:56:07 administrateur CS

Je suis d'accord, je ne l'ai pas remarqué.

Si tu replaces xtype par xusertype le résultat est correct.
Il y a que ce type la qui pause probleme, dans les autres cas xtype = xusertype.

Et pour compléter la source

La table  système dbo.syscolumns

renvoie aussi les paramétres des procédures stockées et fonctions.

Merci de la remarque.

signaler à un administrateur
Commentaire de malalam le 22/12/2008 22:17:28 administrateur CS

Hello,

voici ma version de cette requête, que j'utilise depuis un moment dans una abstraction db :

SELECT syscolumns.name as colname, systypes.name,
syscolumns.length, syscolumns.isnullable, syscolumns.xprec, syscolumns.collation,
syscolumns.iscomputed, syscolumns.colorder, syscolumns.autoval
FROM dbo.systypes systypes
INNER JOIN dbo.syscolumns syscolumns ON syscolumns.xusertype = systypes.xusertype
WHERE syscolumns.id = OBJECT_ID(N'{__TABLENAME__}')

où {__TABLENAME__} est à remplacer par le nom de la table dont on recherche les infos.
A ajouter pour spécifier une colonne : AND syscolumns.name = '{__COLUMNNAME__}'
même remarque pour {__COLUMNNAME__} que pour {__TABLENAME__}.

Et puisqu'on y est : SELECT TOP 1 IDENTITYCOL FROM '{__TABLENAME__}' pour récupérer la colonne identité d'une table.

A noter que mssql possède un bon paquet de procédures pour avoir tout un tas d'infos, les "sp_*" notamment.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

requête sur le résultat d'une requête [ par sev622 ] Bonjour, J'ai un probl&#232;me dans la construction de ma requ&#234;te. J'ai une table avec 2 champs num&#233;riques : id_p, id_f Je veux compter le n Problème Requête SQL INSERT INTO sous access [ par bonnaud ] Bonjour,J'ai un probl&#232;me avec une requ&#234;te INSERT INTO.En fait je veux ins&#233;rer dans une BDD des champs d'une autre table. Le probl&#232; Requête UNION ne passe pas. [ par dpfort ] &nbsp;BonjourJ'ai ex&#233;cut&#233; une requ&#234;te sous SQL&nbsp; ne passe pas. J'ai voulu faire un goupement&nbsp;de Points par table, d'une m&#234 exécuter une requête stockée dans une table [ par chtitena ] Bonjour,Quekqu'un sait-il comment on peut faire pour ex&#233;cuter une requ&#234;te dont le script est stock&#233; dans une table Oracle?Merci pour vo Problème avec une requête [ par emmanuel9 ] Bonjour &#224; tous, J'ai une table Personne avec dans cette table une colonne "date de cr&#233;ation" et ma requete ressemble &#224; ca : "SELECT * F URGENT - AJOUTER UN PARAMETRE DE TYPE TABLE DANS UNE PROCEDURE STOCKEE [ par clote1 ] Bonjour,Je souhaiterez cr&#233;er une proc&#233;dure stock&#233;e avec un dataset en param&#232;tre.Lorsque j'ex&#233;cute ma requ&#234;te je veux lui COMMENT FAIRE UN CHAMP like UN AUTRE CHAMP [ par Delph83 ] Bonjour tout le monde Voil&#224; j&#8217;ai un probl&#232;me avec une requ&#234;te sql et la clause LIKE&nbsp;: <P class=MsoNormal style="MARGIN: 0cm vba sous access - insertion d'une requete dans une table [ par bonnaud ] Bonjour, J'ai fait une requ&#234;te sous access en vba qui me permet de calculer un nouveau champ que j'ai nomm&#233; total &#224; partir d'une table. faire une copie d'une table de ma base de données [ par romydamour ] salut à tous, voilà j'ai un souci avec une requête sql. Je travaille avec VisualC++ et Access. Voilà j'ai dans ma BD une table "Cycles" avec 3 colonne Update sur plusieurs tables [ par Chris_LaFouine ] Bonjour,Je voudrais savoir comment mettre &#224; jour une table &#224; partir des donn&#233;es d'une autre table. Je m'explique...J'ai une table A et


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,437 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.