给定一个数据库,我想要一个SQL命令,它将返回所有表的分层列表。现在忍受我,因为我从未做过SQL查询。
在发布之前,我在网上搜索并找到了一些足够接近但不完全符合我想要的解决方案。
像这样的人: SQL Server: Howto get foreign key reference from information_schema?
SELECT
KCU1.CONSTRAINT_NAME AS FK_CONSTRAINT_NAME
,KCU1.TABLE_NAME AS FK_TABLE_NAME
,KCU1.COLUMN_NAME AS FK_COLUMN_NAME
,KCU1.ORDINAL_POSITION AS FK_ORDINAL_POSITION
,KCU2.CONSTRAINT_NAME AS REFERENCED_CONSTRAINT_NAME
,KCU2.TABLE_NAME AS REFERENCED_TABLE_NAME
,KCU2.COLUMN_NAME AS REFERENCED_COLUMN_NAME
,KCU2.ORDINAL_POSITION AS REFERENCED_ORDINAL_POSITION
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU1
ON KCU1.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG
AND KCU1.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA
AND KCU1.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU2
ON KCU2.CONSTRAINT_CATALOG = RC.UNIQUE_CONSTRAINT_CATALOG
AND KCU2.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA
AND KCU2.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME
AND KCU2.ORDINAL_POSITION = KCU1.ORDINAL_POSITION
它很好,但它不是递归的......它只显示当前表的直接父表,如果有的话......不是所有的父表。如果它没有父母,它根本不显示该表。
我也发现了这个: Hierarchical List of All tables
EXEC sp_msdependencies @intrans = 1
这显示了我想要的所有表的依赖关系的顺序,但是没有显示父表。 (我读到这个存储过程没有记录)。
我希望得到的结果与此类似:
Level Table Name Parent Table
-----------------------------------
1 Application
1 System
2 Users Application
2 Roles Application
2 Membership Application
3 Membership Users
3 UserInRoles Users
3 UserInRoles Roles
然后我会从C#/ VB.NET中读取这个我已经具体的项目
有人可以帮忙吗?
真的很感激