2016-12-13 61 views
2

我有一个服务器中的10个数据库,是否有可能查询所有这些数据库中的表?从所有服务器获取表

select * from master..sysobjects where name ='table' 

回答

0

您可以使用下面的SQL来获取每个数据库的所有表。您可以编辑SQL在@SQL参数得到的东西每个数据库别的,如果你想

DECLARE @databaseName VARCHAR(30) 


DECLARE @TABLES TABLE ([Database] VARCHAR(MAX), [Table_Name] VARCHAR(MAX)) 

DECLARE [DBs] CURSOR FOR 
SELECT name FROM sys.databases 


OPEN [DBs] 
FETCH NEXT FROM [DBs] INTO @databaseName 

WHILE @@FETCH_STATUS = 0 
BEGIN 

     DECLARE @SQL VARCHAR(MAX) = 'SELECT ''' + @databaseName +''' as [Database], Name FROM ['+ @databaseName +'].sys.tables' 

     INSERT INTO @TABLES 
     EXEC (@SQL) 

     FETCH NEXT FROM [DBs] INTO @databaseName 
END 

CLOSE [DBs] 
DEALLOCATE [DBs] 

SELECT * FROM @TABLES 
0

您可以使用以下步骤

Declare @str nvarchar(max) 
Select name into #temp from sys.databases 
Select 'Select name from '+name+'.sys.tables' AS statements into #temp1 from #temp 
Set @str=(Select distinct Stuff((Select ' '+statements from #temp1 for xml path('')),1,1,'') from #temp1) 

Exec (@str) 

请回复我。在此

相关问题