begin process at 2010 07 29 22:24:13
  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 :8 258

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

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
SQL SERVER 2005 : OBTENIR LA LISTE DES BASES DE CONTENU D'UN... 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 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. 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 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 LOAD DATA LOCAL INFILE insert que certaines colonnes [ par ericsandrine ] bonjour j'ai un fichier csv avec 10 colonnes et ma table n'a que 3 colonnes peut on faire un LOAD DATA LOCAL INFILE en ne récupérant que certaines Requete SQL Access : Correspondance entre 2 table [ par Barbados16 ] Bonjour à tous, je suis novice en SQL et j'essaye d'adapter une application ACCESS. Je vous explique ce que je veux faire et où je coince. Je dispos requête update avec select [ par bies ] Bonjour!!! besoin d'aide car çà fait des heures que je suis sur cette requête Au départ, j'ai ma table1 dont un extrait ci dessous. dans cette table, Mettre à jour un table par rapport a une autre table [ par john44 ] Bonjour, J’ai créé une base de données (CalendarJVI.mdb) qui contient 2 tables : « CalendrierJVI » (table lié avec le calendrier d’Outlook) et « Cal Inserer champs [ par sparo83 ] Bonjour à vous, Voila, je dois déposer mon application pour ma soutenance la semaine prochaine et à la derniere minute mon encadreur me demande de ch


Nos sponsors


Sondage...

Comparez les prix

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,936 sec (4)

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