sql脚本
/*************1:删除临时表*************/ if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#temptable')) drop table #temptable; /*************2:定义游标*************/ declare databasenamecursor cursor for select name from master.dbo.sysdatabases; declare @databasename nvarchar(512),@databasecount int; set @databasecount=(select count(1) from master.dbo.sysdatabases); /*************3:打开游标*************/ open databasenamecursor; /*************4:连接游标*************/ fetch next from databasenamecursor into @databasename /*************5:创建临时表*************/ create table #temptable ( id int identity(1,1) not null, databasename nvarchar(max), schemaname nvarchar(max), tablename nvarchar(max), primary key(id) ); /************6:循环插入临时表中*************/ while (@@fetch_status=0 and @databasecount>0) begin begin try set @databasecount=@databasecount-1; declare @tablefullname nvarchar(1024); set @tablefullname='select '''+@databasename+''',schema_name(schema_id),name from '+@databasename+'.sys.tables'; insert into #temptable(databasename,schemaname,tablename) exec sp_executesql @tablefullname; --指向下一个游标 fetch next from databasenamecursor into @databasename end try begin catch continue; end catch end /*************7:关闭游标*************/ close databasenamecursor; /*************8:释放游标*************/ deallocate databasenamecursor; /*************9:查看服务器所有表*************/ select * from #temptable
sql脚本使用
先执行注释1,然后注释2到注释8脚本一起执行,最后执行注释9或者使用临时表。
sql执行结果