Afficher bases plus tables dans une requete

Messages postés
105
Date d'inscription
mardi 13 janvier 2004
Statut
Membre
Dernière intervention
18 mai 2019
- - Dernière réponse : xzonz
Messages postés
105
Date d'inscription
mardi 13 janvier 2004
Statut
Membre
Dernière intervention
18 mai 2019
- 31 déc. 2011 à 18:51
Bonjour a toutes et tous

j'aimerais pouvoir afficher dans une même requête
la liste de toutes les bases de données d'un server sql 2005 avec leurs tables
sous cette forme:

nom de la base nom de la table
base1 table1
base1 table2
base1 table3
base2 table1
base2 table2
base2 table3
base2 table4
base3 table1
base3 table2

ainsi de suite ...
est ce possible ?

Merci de votre aide

Franck
Afficher la suite 

2 réponses

Messages postés
219
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
22 juin 2017
8
0
Merci
bonjour,

oui il y a moyen, en principe voici ce qu'il te faut

create table #tmp
(
dbname nvarchar(128),
tablename nvarchar(128)
)
DECLARE curseur CURSOR FOR 
select
DATABASE_NAME   = db_name(s_mf.database_id)
from
    sys.master_files s_mf
where
    s_mf.state = 0 and -- ONLINE
    has_dbaccess(db_name(s_mf.database_id)) = 1
group by s_mf.database_id

OPEN curseur;

declare @dbname varchar(50)
declare @usestring varchar(300)

declare @firstpass int
set @firstpass  = 1

FETCH NEXT FROM curseur 
INTO @dbname;

WHILE @@FETCH_STATUS = 0
BEGIN
    
    if @firstpass = 0 
    begin
set @usestring = 'select dbname=''' + @dbname + ''',name  into #tmp from ' + @dbname + '..SYSOBJECTS where TYPE = ''U'' order by NAME'
set @firstpass  = 1

    end
    else
    begin
set @usestring 'insert #tmp select ''' + @dbname + ''',name from ' + @dbname + '..SYSOBJECTS  where TYPE ''U'' order by NAME'

    end
    
exec(@usestring)

FETCH NEXT FROM curseur 
INTO @dbname;
END
CLOSE curseur;
DEALLOCATE curseur;
select * from #tmp order by dbname,tablename 
drop table #tmp



Bonne journée


Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
Commenter la réponse de cgandco
Messages postés
105
Date d'inscription
mardi 13 janvier 2004
Statut
Membre
Dernière intervention
18 mai 2019
0
Merci
ok super !

je crois qu'un bout de temps serais passé
avant que je puisse trouver.

merci

Franck
Commenter la réponse de xzonz