我的问题很像这里的问题:
如何在 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 及其所有表
:
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
数据库 1 表 3 字段 2
数据库 1 表 3 字段 3
数据库 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 table 1 field 1”的长列表。如果我们可以将上面的查询添加到上面生成的左侧的 DATABASENAME 并为所有数据库执行此操作,我们将开展业务!