begin process at 2010 07 29 22:32:51
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > QUELQUES REQUETES UTILES POUR INTERROGER LES TABLES SYSTEMES (MSSQL)

QUELQUES REQUETES UTILES POUR INTERROGER LES TABLES SYSTEMES (MSSQL)


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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 :15 156

Auteur : nhervagault

Ecrire un message privé
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

 Sources de la même categorie

Source avec Zip Source avec une capture SQL SERVER - GENERATION AUTOMATIQUE D'UNE RETRO-DOCUMENTATIO... par FENETRES
[SQL SERVEUR] VÉRIFIER L'ESPACE OCCUPÉ DANS UNE BASE DE DONN... par Hyperion
TROUVER LES PROCHAINS ANNIVERSAIRES par zefo
REQUÊTE SQL POUR DÉTERMINER L'ESPACE OCCUPÉ DANS LES TABLESP... par sgoriaud
SQL SERVER - OBTENIR LES VALEURS CORRESPONDANT A DES UNICODE par fabrice69

 Sources en rapport avec celle ci

CRÉATION D'UNE BASE DE DONNÉE AVEC FICHIER DE DONNÉES, JOURN... par fearmaker
SQL SERVER 2000 - VIDER ET COMPACTER TOUTES LES BASES DE DON... par fabrice69
SQL SERVER 2005 : HISTORISER LES PROCÉDURES STOCKÉES D'UNE B... par skweeky
SQL SERVER - TESTER L'EXISTANCE D'UN OBJET par skweeky
SQL SERVER - RÉCUPÈRER LA/LES RELATION(S) ENTRE 2 TABLES par white_mage

Commentaires et avis

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

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.

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 2010
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales