列出数据库,表,字段,存储过程

时间:2013-09-18 17:47:06

标签: sql database list field

我的问题非常像这里的问题:

How to find column names for all tables in all databases in SQL Server

但由于声誉不是50或者>我无法发表评论。我不能在答案框中放任何东西,因为你应该把答案放在答案框中。

我从Stack Overflow获得了这段代码:

SELECT *
FROM master..sysdatabases
where dbid > 4
--order by dbid
order by name

它非常棒 - 它列出了我们所有的数据库。

我想要的是获取显示这些列的结果表:

DatabaseName,TableSPViewName,FieldName,TypeSize,Indexed

DatabaseName 将只是数据库的名称 TableSPViewName 将包含
该数据库中所有表的名称
该数据库中任何存储过程的名称
该数据库中所有视图的名称
FieldName 将是该表中所有字段的列表(如果它是表格或视图) TypeSize 将是该字段的类型和大小(如:int,varchar(##),bit ...)

编辑2013年9月20日---------------

在本网站上:

http://blog.sqlauthority.com/2009/04/26/sql-server-list-all-the-tables-for-all-databases-using-system-tables/

我找到了这个:

exec sp_msforeachdb 'select "?" AS db, * from ?.sys.tables'

但是,SP为每个数据库建立了一个单独的查询窗口及其所有表格,以便您获得
DB及其所有表格
DB及其所有表格
DB及其所有表格
DB及其所有表格


我需要:

DB 1表1字段1
DB 1表1字段2
DB 1表1字段3
DB 1表2字段1
DB 1表2字段2
DB 1表2字段3
DB 1表3字段1
DB 1表3字段2
DB 1表3字段3
DB 2表1字段1
DB 2表1字段2
DB 2表1字段3
DB 2表2字段1
DB 2表2字段2
DB 2表2字段3
DB 2表3字段1
DB 2表3字段2
DB 2表3字段3

编辑#2 2013年9月20日---------------

在本网站上:

http://blog.clicdata.com/2012/08/02/how-to-list-all-tables-and-columns-with-types-in-a-sql-server-database/

我找到了这个:

SELECT  tTables.name AS table_name,
        tCols.name AS column_name,
        tTypes.name,        
        tTypes.max_length,       
        tTypes.precision,        
        tTypes.scale
        FROM    sys.tables AS tTables
        INNER JOIN sys.columns AS tCols 
        ON tTables.OBJECT_ID = tCols.OBJECT_ID
        JOIN sys.types AS tTypes 
        ON tCols.user_type_id = tTypes.user_type_id
        ORDER BY tTables.name;


但这只适用于正在使用的CURRENT数据库 它让我真的很接近我正在寻找的东西,但我仍然需要一个查询来完成上面所做的,但对于我们拥有的所有数据库。请参阅上面显示的“DB 1表1字段1”的长列表。如果我们可以通过以上查询将DATABASENAME添加到上面生成的内容的左侧,并为所有数据库执行此操作,我们将开展业务!


1 个答案:

答案 0 :(得分:0)

一种方法是

EXEC sp_msforeachdb ‘SELECT tTables.name AS table_name,
tCols.name AS column_name,
tTypes.name,
tTypes.max_length,
tTypes.precision,
tTypes.scale
FROM sys.tables AS tTables
INNER JOIN sys.columns AS tCols
ON tTables.OBJECT_ID = tCols.OBJECT_ID
JOIN sys.types AS tTypes
ON tCols.user_type_id = tTypes.user_type_id
ORDER BY tTables.name;’

对于一个完整的表,将结果插入临时表。