SQLServer之查询当前服务器下所有目录视图表
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执行结果