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 !

LISTE DES BASES,TABLES ET COLONNES TRIÉS PAR TYPE (PROCEDURE STOCKÉS,VUES,TABLES UTLISATEUR,TABLES SYSTEME ETC....)


Information sur la source

Catégorie :Divers Classé sous : liste, base, table, colonne, tri Niveau : Débutant Date de création : 03/10/2005 Date de mise à jour : 03/10/2005 16:47:07 Vu : 6 852

Note :
8 / 10 - par 1 personne
8,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 liste a l'aide d'un curseur liste la base de donnée d'un serveur SQL sur IIS
il doit etre possible de le rendre plsu rapide en evitant le curseur je n'ai pas encore trouvé,
voici donc une methode qui permet de lister le tout a partir d'un curseur,
je mettrais ma source a jour si je trouve le moyen de le faire sans passer par le curseur car pour l'insatnt c'est un peu long des que la base de donnée devient importante.
En tout cas peut etre utile pour dresser un tree view de la base de donnée a condition de ne pas avoir une trop grosse base de donnée.
 

Source

  • /*Petite Mise a Jour : Cette requete fait la meme Chose que le curseur du dessous mais la fonction sp_Msforeachhdb n'est pas documentée dans SQL server donc a utliser avec precaution*/
  • exec sp_Msforeachdb 'SELECT ''?'' as nameBase,O.name as nameTable,O.TYPE,C.name as nameColumn FROM "?".dbo.sysobjects O LEFT JOIN "?".dbo.syscolumns C on C.id=O.id'
  • rem : le ? remplace le nom des bases de données, la fonction sp_Msforeachdb remplace elle meme le ? par le nom de toutes les Tables
  • /*Meme Chose mais avec curseur (10* plus lent)*/
  • DECLARE C_Base CURSOR
  • FOR
  • SELECT
  • B.name AS NomBase,
  • B.dbid AS IdBase
  • FROM
  • master.dbo.sysdataBases B
  • LEFT JOIN master.dbo.sysobjects O
  • on O.id=B.dbid
  • DECLARE @Base as varchar(50)
  • DECLARE @Id as int
  • DECLARE @SQL as varchar(5000)
  • declare @Tri as int
  • DECLARE @i as int
  • SET @i=0
  • SET @SQL='SELECT maBase,nameTable,nameColumn,
  • NomType=
  • CASE type
  • WHEN ''U'' THEN ''Tables Utilisateur''
  • WHEN ''FN'' THEN ''Fonctions''
  • WHEN ''P'' THEN ''Procedure Stockée''
  • WHEN ''S'' THEN ''Tables Systemes''
  • WHEN ''TR'' THEN ''Triggers''
  • WHEN ''V'' THEN ''VUES''
  • ELSE ''Autre''
  • END,
  • Tri=
  • CASE type
  • WHEN ''U'' THEN ''1''
  • WHEN ''FN'' THEN ''5''
  • WHEN ''P'' THEN ''4''
  • WHEN ''S'' THEN ''2''
  • WHEN ''TR'' THEN ''6''
  • WHEN ''V'' THEN ''3''
  • ELSE 7
  • END FROM ('
  • OPEN C_Base
  • FETCH C_Base INTO @Base,@Id
  • WHILE @@FETCH_STATUS = 0
  • BEGIN
  • IF @i>0
  • BEGIN
  • SET @SQL = @SQL + ' UNION '
  • END
  • SET @SQL = @SQL + ' SELECT ''' + @Base + ''' as maBase,O.name as nameTable,O.TYPE,C.name as nameColumn FROM [' + @Base + '].dbo.sysobjects O LEFT JOIN [' + @Base + '].dbo.syscolumns C on C.id=O.id'
  • SET @i=@i+1
  • FETCH C_Base INTO @Base,@Id
  • END
  • CLOSE C_Base
  • DEALLOCATE C_Base
  • SET @SQL= @SQL + ')AS NewVue ORDER BY maBase,Tri,nameTable,NameColumn'
  • exec(@SQL)
/*Petite Mise a Jour : Cette requete fait la meme Chose que le curseur du dessous mais la fonction sp_Msforeachhdb n'est pas documentée dans SQL server donc a utliser avec precaution*/

exec sp_Msforeachdb 'SELECT ''?'' as nameBase,O.name as nameTable,O.TYPE,C.name as nameColumn FROM "?".dbo.sysobjects O LEFT JOIN "?".dbo.syscolumns C on C.id=O.id'

rem : le ? remplace le nom des bases de données, la fonction sp_Msforeachdb remplace elle meme le ? par le nom de toutes les Tables

/*Meme Chose mais avec curseur (10* plus lent)*/
DECLARE C_Base CURSOR 
FOR 
	SELECT
	      B.name AS NomBase,
	      B.dbid AS IdBase
	FROM 
	      master.dbo.sysdataBases B
	      LEFT JOIN master.dbo.sysobjects O
	      on O.id=B.dbid

DECLARE @Base as varchar(50)
DECLARE @Id as int
DECLARE @SQL as varchar(5000)
declare @Tri as int
DECLARE @i as int

SET @i=0
SET @SQL='SELECT maBase,nameTable,nameColumn,
		 NomType=
      		     CASE type
         		WHEN ''U'' THEN ''Tables Utilisateur''
         		WHEN ''FN'' THEN ''Fonctions''
         		WHEN ''P'' THEN ''Procedure Stockée''
         		WHEN ''S'' THEN ''Tables Systemes''
         		WHEN ''TR'' THEN ''Triggers''
			WHEN ''V'' THEN ''VUES''
         		ELSE ''Autre''
      		     END,
	   	 Tri=
		     CASE type
			WHEN ''U'' THEN ''1''
			WHEN ''FN'' THEN ''5''
			WHEN ''P'' THEN ''4''	
			WHEN ''S'' THEN ''2''	
			WHEN ''TR'' THEN ''6''
			WHEN ''V'' THEN ''3''
			ELSE 7
			END FROM ('

OPEN C_Base
FETCH C_Base INTO @Base,@Id
	WHILE @@FETCH_STATUS = 0
	BEGIN
		IF @i>0 
		BEGIN
			SET @SQL = @SQL + ' UNION '
		END
		SET @SQL = @SQL + ' SELECT ''' + @Base + ''' as maBase,O.name as nameTable,O.TYPE,C.name as nameColumn FROM [' + @Base + '].dbo.sysobjects O LEFT JOIN [' + @Base + '].dbo.syscolumns C on C.id=O.id'
	SET @i=@i+1
	FETCH C_Base INTO @Base,@Id
	END
CLOSE C_Base
DEALLOCATE C_Base
SET @SQL= @SQL + ')AS NewVue ORDER BY maBase,Tri,nameTable,NameColumn'
exec(@SQL)

Historique

03 octobre 2005 16:47:08 :
Ajout d'une methode Sans curseur 10* plus rapide (2s contre 20 avec le curseur sur ma base de données)

Commentaires et avis

signaler à un administrateur
Commentaire de fabrice69 le 27/10/2005 23:52:37 administrateur CS

Intéressant.
je ne connaissais pas la fonction présentée en premier plan.
Romelard Fabrice

signaler à un administrateur
Commentaire de zekabyle le 27/04/2006 18:29:32

j'utilise deux bases "portefeuille" sur access dans le même dossier et je veux faire une liaison dynamique entre ces deux bases pour pouvoir utiliser les tables selon leur propre base.
Comment faire?
merci

signaler à un administrateur
Commentaire de crilun le 28/04/2006 14:53:10

tu peut expliquer plus je voit pas tres bien ce que tu veut faire?
si tu pouvais donner un exemple ocncret de ce que tu veut faire je pourrais peut etre te repondre mais la je vois pas trop ce que tu veut faire???

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Nom d'une colonne [ par NoOneElse ] salut,je développe une application de traçage d'une base de donnée Oracle où je peut crée des TRIGGER a partir d'un nom d'une table existe dans la bas table dans base de donnée avec mise à jour de colonne [ par lsamsoumal ] Bonjour tout le monde. dans une base de données mysql je veux créer une table presence qui contient 3 colonnes: utilisateur,date/heure et evenement. Extraction d'une colonne de la table retournée par la procédure stockée xp_logininfo [ par zavier666 ] Bonjour, j'ai fait un petit soft qui permet de se loguer à un serveur sql et de l'interroger (en download sur le site). lorsque je lui passe la comm Différentes valeurs pour un même code [ par Neurasthenie ] Bonjour,Je travailles actuellement sur un projet de migration (de base à base) et j'écris donc les procédures stockées qui permettront d'aller cherche Comment utiliser du binaire dans une requete dynamique ? [ par boromsikim ] Bonjour à tous,J'utilise sous MSSQL 2005 des colonnes timestanp pour archiver des données depuis les tables d'un ERP vers le datamart de mon cube.Jusq Suppression d'une colonne ayant une valeur par défaut [ par RMI ] Bonjour à tous,Je souhaite supprimer une colonne d'une table qui possède une valeur par défaut. create table MA_TABLE(    id            int            Liste des mots d'une colonne [ par Yenapa ] Bonjour a tousJe souhaite construire une liste des mots à partir d'une tableN'ayant rien trouvé sur le net pour faire ça, je pense devoir utiliser une Problème de clée étrangère [ par emmanuel9 ] Bonjour à tous, Mon problème vient du faite que j'ai plusieurs tables dans une base de données dont une table personne et j'ai un progr duplication des lignes d'une table en fonction d'une valeur [ par ple2415 ] Bonjour à tous,je souhaiterais dupliquer les lignes d'une table en fonction de la valeur contenue dans un des champs de cette table.exemple d'une lign je ne peu plus afficher le contenu d'une table [ par abdoo05 ] salut, j'ai crée un pg avec java qui permet d'afficher le contenu d'une table de base de donnée... mais le pb est que ma table est trop chargé et je n


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

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,390 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é.