如何在ASP.NET MVC应用中查看SQL Server所有表的database schema
查看带关联关系的SQL Server完整数据库Schema的方法
1. 直接执行系统视图查询
无需额外工具,在任意可执行SQL的工具(SSMS、项目内置数据库查询工具等)中运行以下命令,即可获取所有表的字段、类型、约束、外键关联等完整Schema信息:
SELECT t.name AS 表名, c.name AS 字段名, ty.name AS 字段类型, c.max_length AS 字段长度, c.is_nullable AS 是否允许为空, ISNULL(pk.is_primary_key, 0) AS 是否主键, fk.name AS 外键约束名, referenced_t.name AS 关联表名, referenced_c.name AS 关联字段名 FROM sys.tables t INNER JOIN sys.columns c ON t.object_id = c.object_id INNER JOIN sys.types ty ON c.system_type_id = ty.system_type_id AND c.user_type_id = ty.user_type_id LEFT JOIN ( SELECT ic.object_id, ic.column_id, 1 AS is_primary_key FROM sys.indexes i INNER JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id WHERE i.is_primary_key = 1 ) pk ON c.object_id = pk.object_id AND c.column_id = pk.column_id LEFT JOIN sys.foreign_key_columns fkc ON c.object_id = fkc.parent_object_id AND c.column_id = fkc.parent_column_id LEFT JOIN sys.foreign_keys fk ON fkc.constraint_object_id = fk.object_id LEFT JOIN sys.tables referenced_t ON fkc.referenced_object_id = referenced_t.object_id LEFT JOIN sys.columns referenced_c ON fkc.referenced_object_id = referenced_c.object_id AND fkc.referenced_column_id = referenced_c.column_id ORDER BY t.name, c.column_id
如果仅需要查询表间关联关系,可运行简化版SQL:
SELECT fk.name AS 外键名, OBJECT_NAME(fk.parent_object_id) AS 子表名, COL_NAME(fkc.parent_object_id, fkc.parent_column_id) AS 子表外键字段, OBJECT_NAME(fk.referenced_object_id) AS 父表名, COL_NAME(fkc.referenced_object_id, fkc.referenced_column_id) AS 父表关联字段 FROM sys.foreign_keys fk INNER JOIN sys.foreign_key_columns fkc ON fk.object_id = fkc.constraint_object_id ORDER BY 子表名, 父表名
2. SQL Server Management Studio (SSMS) 可视化查看
- 生成完整Schema脚本:右键目标数据库 → 选择「任务」→ 「生成脚本」,按照向导提示选择所有表/数据库对象,在脚本选项中勾选需要导出的约束、外键、索引等元素,即可生成完整的Schema创建脚本
- 可视化关系图:右键数据库节点下的「数据库关系图」→ 「新建数据库关系图」,添加所有需要查看的表后,SSMS会自动用连线展示已配置的外键关联关系,直观呈现表间关联逻辑
3. 基于ASP.NET MVC项目的Entity Framework工具导出
如果你的项目使用Entity Framework作为数据访问组件,可直接在开发环境导出Schema:
- 若使用EF6,在Visual Studio的包管理器控制台执行
Update-Database -Script,即可生成从空库到当前版本的全量Schema脚本,包含所有表关联配置 - 若使用EF Core,在包管理器控制台执行
Script-Migration,即可生成包含所有表结构、约束、关联关系的完整Schema脚本
内容的提问来源于stack exchange,提问作者Abdulatif Hejazi
相关产品推荐
相关产品推荐

