`/*************1:刪除臨時表*************/
sql
if exists(
`select*
fromtempdb..sysobjects
whereid=object_id(
'tempdb..#tempTable'`))
服務器
drop
`table`#tempTable;
ide
/*************2:定義遊標*************/
fetch
declare
`databaseNameCursorcursor
forselect
namefrom
master.dbo.SysDatabases;`spa
declare
`@databaseName nvarchar(512),@databaseCountint
;`code
set
`@databaseCount=(select
count(1)
from`master.dbo.SysDatabases);
blog
/*************3:打開遊標*************/
it
open
`databaseNameCursor;`table
/*************4:鏈接遊標*************/
ast
fetch
`nextfrom
databaseNameCursorinto
@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
`nextfrom
databaseNameCursorinto
@databaseName `
end
try
begin
`catch`
continue
`;`
end
`catch`
end
/*************7:關閉遊標*************/
close
`databaseNameCursor;`
/*************8:釋放遊標*************/
deallocate
`databaseNameCursor;`
/*************9:查看服務器全部表*************/
select
`*from
#tempTable``
先執行註釋1,而後註釋2到註釋8腳本一塊兒執行,最後執行註釋9或者使用臨時表。