Bonjour,
J'ai créé la procédure suivante mais cela ne fonctionne pas.
Le USE n'est pas pris en compte...
Comment faire pour lister toutes les tables de chaque base de données en une seule procédure?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 Declare @temp varchar(50), @DBName_ varchar(100), @TBName_ varchar(100), @Size_ float Declare @sql varchar(5000) --Création de la table temporaire CREATE TABLE #sp_spaceused (TBName varchar(150), NbRows bigint, SReserved varchar(50), SData varchar(50), Sindex varchar(50), SFree varchar(50)) Declare cursor_db CURSOR --On liste les basses des données For SELECT name AS DBName FROM master.dbo.sysdatabases OPEN cursor_db Fetch next from cursor_db INTO @DBName_ WHILE @@Fetch_STATUS = 0 BEGIN --Print 'SELECT table_name FROM information_schema.tables WHERE table_Catalog= ''' + @DBName_ + ''' ' --Print 'USE ' + @DBName_ --On liste les tables... Execute('USE ' + @DBName_ ) Declare cursor_size CURSOR For SELECT table_name FROM information_schema.tables WHERE table_Catalog= @DBName_ and Table_Type = 'BASE TABLE' OPEN cursor_size Fetch next from cursor_size INTO @TBName_ WHILE @@Fetch_STATUS = 0 BEGIN insert into #sp_spaceused execute sp_spaceused @TBName_ Fetch next from cursor_size INTO @TBName_ END CLOSE cursor_size; DEALLOCATE cursor_size; Fetch next from cursor_db INTO @DBName_ END CLOSE cursor_db; DEALLOCATE cursor_db; select * from #sp_spaceused Drop Table #sp_spaceused
Merci d'avance
Portekoi
Partager