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