SQLServer之查詢當前服務器下全部目錄視圖表

SQL腳本

`/*************1:刪除臨時表*************/sql

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

drop`table`#tempTable;ide

/*************2:定義遊標*************/fetch

declare`databaseNameCursorcursorforselectnamefrommaster.dbo.SysDatabases;`spa

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

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

/*************3:打開遊標*************/it

open`databaseNameCursor;`table

/*************4:鏈接遊標*************/ast

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執行結果

image.png

相關文章
相關標籤/搜索