Sql server 如何获得数据库和表名

Sql server 如何获得数据库和表名,sql-server,Sql Server,如何将所有数据库名称和相应的表名称放在一起?您必须编写一个存储过程 首先获取数据库名称 SELECT Name FROM master.sys.databases 对于每个数据库 SELECT %DatabaseName%, Name FROM %DatabaseName%.SysObjects WHERE type = 'U' 编辑以下是存储过程 CREATE PROCEDURE sp_GetDatabasesTables AS BEGIN -- SET NOCOUNT ON added

如何将所有数据库名称和相应的表名称放在一起?

您必须编写一个存储过程

首先获取数据库名称

SELECT Name FROM master.sys.databases
对于每个数据库

SELECT %DatabaseName%, Name FROM %DatabaseName%.SysObjects WHERE type = 'U'
编辑以下是存储过程

CREATE PROCEDURE sp_GetDatabasesTables 
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
CREATE TABLE #schema ( DatabaseName VarChar(50), TableName VarChar(50) );
DECLARE @DatabaseName varchar(50);
DECLARE cursorDatabase CURSOR FOR
    SELECT Name FROM master.sys.databases WHERE Name NOT IN ('tempdb'); -- add any table you want to filter here

OPEN cursorDatabase;

-- Perform the first fetch.
FETCH NEXT FROM cursorDatabase INTO @DatabaseName;

-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN
    EXEC ('INSERT INTO #schema (DatabaseName, TableName) SELECT ''' + @DatabaseName + ''' AS DatabaseName, Name As TableName FROM ' + @DatabaseName + '.sys.SysObjects WHERE type = ''U'';');
    FETCH NEXT FROM cursorDatabase INTO @DatabaseName;
END

CLOSE cursorDatabase;
DEALLOCATE cursorDatabase;
SELECT * FROM #schema
END

这不是一个问题。你能对它进行编辑和重新措辞,使其更有意义,并提供更多关于你想做什么的信息吗
CREATE TABLE #dbs ( DatabaseName VARCHAR(256), TableName VARCHAR(256) )

EXEC sp_msforeachdb 'INSERT INTO #dbs
    SELECT ''?'', [name] FROM dbo.SysObjects WHERE XType = ''U'''

SELECT * FROM #dbs
DROP TABLE #dbs