begin process at 2012 02 04 18:21:14
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

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

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


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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 :10 057

Auteur : crilun

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

 Sources de la même categorie

Source avec Zip TUTORIEL PL/SQL par Julien39
CAPTURE DES CHANGEMENTS DE DONNÉES (CDC: CHANGE DATA CAPTURE... par wissemhabboub
INTERPRETEUR BRAINFUCK par coucou747
CRÉATION D'UNE BASE DE DONNÉE AVEC FICHIER DE DONNÉES, JOURN... par fearmaker
MYSQL : CRÉATION D'UN GUID par maitredede

 Sources en rapport avec celle ci

CRÉATION D'UNE BASE DE DONNÉE AVEC FICHIER DE DONNÉES, JOURN... par fearmaker
SQL SERVER 2005 : OBTENIR LA LISTE DES BASES DE CONTENU D'UN... par fabrice69
Source avec Zip DUMP LOAD D'UNE BASE DE DONNÉES par pneau
T-SQL PROCÉDURE DE RECHERCHE DE TABLES À PARTIR DU LIBELLÉ D... par MaRsIgLiA
LISTER LES BASES DE DONNÉES D'UN SQLSERVER 2000 par Crazyht

Commentaires et avis

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

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

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. Modification de la longueur d'une colonne par la longueur d'une colonne d'une autre table existante [ par karlil ] Bonjour, J'ai essayé plusieurs requêtes, mais je n'arrive pas à modifier la longueur d'une colonne à partir de la longueur d'une colonne d'une autre comment importer la colonne d'une table d'une base dans la colonne d'une table d'une autre base [ par oximo ] Hello, un titre un peu compliqué mais qui dit bien ce que je cherche à faire (et peut être pourquoi je ne trouve pas de solution sur google ;) ) Je c Pb sur la structure d'une base de données [ par bobarman ] Bonjour, Je me présente, Je m'appelle Clément, je suis étudiant en chimie, je développe quand j'ai du temps libre et actuellement je suis en stage da Erreur oracle error ORA-01747: spécification utilisateur.table.colonne, table.colonne ou colonne non valide [ par midoxe ] Bonjour, C'est la première fois que je viens sur ce forum d'SQL les amis[^^happy13] je rencontre un problème bizarre que je n'ai jamais rencontré su remplire une table dans une base de donnée distante [ par hanouna021 ] bonjour,je suis debutante en windev et je veux remplire une table personne dans une base de donnée distante j'ai utiliser une requete mais jarrive pas copier une base avec structure identique [ par brezoneg ] Bonjour, J'essaye de faire la copie d'une table vers une autre (un clone en quelque sorte) en utilisant : create table nouvelle_table as select * from liste les bases et tables sur sqlser 200 [ par xzonz ] bonjour a toutes et tous ma question est simple (à poser du moins !) est il possible en une seule requete de lister toutes les bases d'un serveur sq 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


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 5,569 sec (4)

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