SQLServer之查询当前服务器下所有目录视图表

SQL脚本

`/*************1:删除临时表*************/

if exists(`select*fromtempdb..sysobjectswhereid=object_id('tempdb..#tempTable'`))

drop`table`#tempTable;

/*************2:定义游标*************/

declare`databaseNameCursorcursorforselectnamefrommaster.dbo.SysDatabases;`

declare`@databaseName nvarchar(512),@databaseCountint;`

set`@databaseCount=(selectcount(1)from`master.dbo.SysDatabases);

/*************3:打开游标*************/

open`databaseNameCursor;`

/*************4:连接游标*************/

fetch`nextfromdatabaseNameCursorinto@databaseName`

/*************5:创建临时表*************/

create`table`#tempTable

(

id`intidentity(1,1)notnull,`

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`nextfromdatabaseNameCursorinto@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执行结果

SQLServer之查询当前服务器下所有目录视图表_第1张图片

你可能感兴趣的:(sqlserver)