使用SSMS v18.11.1无DB Diagrams功能,如何便捷生成SQL脚本的ER图?
解决方案:自动生成带关系的SQL Server ER图
针对你遇到的SSMS 18.11.1缺失数据库图功能、工具无法自动关联表关系的问题,以下是几个无需手动连线的实用方案:
1. 用Visual Studio SSDT一键生成完整ER图
Visual Studio的SQL Server Data Tools(SSDT)可以自动识别SQL脚本或数据库中的外键关系,直接生成带连线的ER图:
- 打开Visual Studio,新建SQL Server数据库项目
- 右键项目 → 导入 → 选择"SQL脚本"或直接连接目标数据库导入结构
- 导入完成后,在解决方案资源管理器中找到「数据库关系图」节点,右键添加新关系图,工具会自动识别所有表和外键并完成连线,无需手动操作。
2. 用SQL脚本提取元数据,配合工具自动关联
如果偏好轻量方案,可以先通过SQL脚本提取表结构和外键关系,再导入支持自动关联的工具:
- 运行以下脚本导出表结构和外键信息:
-- 导出表与列详情 SELECT t.name AS TableName, c.name AS ColumnName, ty.name AS DataType, c.max_length AS MaxLength, c.is_nullable AS IsNullable, CASE WHEN pk.index_id IS NOT NULL THEN 1 ELSE 0 END AS IsPrimaryKey FROM sys.tables t JOIN sys.columns c ON t.object_id = c.object_id JOIN sys.types ty ON c.system_type_id = ty.system_type_id LEFT JOIN sys.index_columns ic ON c.object_id = ic.object_id AND c.column_id = ic.column_id LEFT JOIN sys.indexes pk ON ic.object_id = pk.object_id AND ic.index_id = pk.index_id AND pk.is_primary_key = 1 ORDER BY t.name, c.column_id; -- 导出外键关系 SELECT OBJECT_NAME(fk.parent_object_id) AS ParentTable, COL_NAME(fkc.parent_object_id, fkc.parent_column_id) AS ParentColumn, OBJECT_NAME(fk.referenced_object_id) AS ReferencedTable, COL_NAME(fkc.referenced_object_id, fkc.referenced_column_id) AS ReferencedColumn FROM sys.foreign_keys fk JOIN sys.foreign_key_columns fkc ON fk.object_id = fkc.constraint_object_id;
- 将导出的结果导入Power BI(在数据视图中使用"自动检测关系"功能)或Excel(用Power Query构建关系模型),即可自动生成带连线的关系图。
3. 修复SSMS 18.11.1的数据库图功能
SSMS 18系列其实自带数据库图功能,可能是安装或权限问题导致无法使用:
- 重新运行SSMS安装程序,选择「修改」,确保勾选SQL Server数据库设计器组件,完成安装后重启SSMS
- 若仍无法使用,检查登录数据库的用户是否拥有
db_owner角色,或执行以下语句授予权限:
GRANT CREATE DATABASE TO [你的用户名]; GRANT ALTER ANY SCHEMA TO [你的用户名];
4. 使用专业数据库工具自动生成
如dbForge Studio for SQL Server这类工具,支持直接导入SQL脚本或连接数据库,一键生成包含所有表和自动关联外键的ER图,全程无需手动连线。
内容的提问来源于stack exchange,提问作者Dom Vito
相关产品推荐
相关产品推荐

