Afficher bases plus tables dans une requete

xzonz Messages postés 107 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 23 novembre 2022 - 22 déc. 2011 à 11:25
xzonz Messages postés 107 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 23 novembre 2022 - 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

2 réponses

cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
31 déc. 2011 à 14:20
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.
0
xzonz Messages postés 107 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 23 novembre 2022
31 déc. 2011 à 18:51
ok super !

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

merci

Franck
0