SQL脚本
`/*************1:删除临时表*************/
if exists(
`select*
fromtempdb..sysobjects
whereid=object_id(
'tempdb..#tempTable'`))
drop
`table`#tempTable;
/*************2:定义游标*************/
declare
`databaseNameCursorcursor
forselect
namefrom
master.dbo.SysDatabases;`
declare
`@databaseName nvarchar(512),@databaseCountint
;`
set
`@databaseCount=(select
count(1)
from`master.dbo.SysDatabases);
/*************3:打开游标*************/
open
`databaseNameCursor;`
/*************4:连接游标*************/
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``
SQL脚本使用
先执行注释1,然后注释2到注释8脚本一起执行,最后执行注释9或者使用临时表。