我想生成一个显示数据库中所有表的报告。对于每个表,报告将记录它引用的表以及引用它的表。还包括用于引用的外键。
我之前尝试过使用Red Gate SQL Dependency Tracker,它给了我一个易于阅读,易于使用的报告 - 缺少的只是每个表关联的外键。
如果有人可以成为一个很好的替代软件,可以做我想做的事情,或提供某种形式的替代方法,我将非常感激!我的主要目的实际上是为客户提供某种形式的可读模式,以便客户能够理解数据库中的互连...我尝试过使用数据库图表,但这是不可取的,因为可读性。
谢谢!
答案 0 :(得分:1)
我使用此脚本查询某些系统目录视图
SELECT
fk.name 'FK Name',
tpar.name 'Parent Table',
colpar.name 'Parent Column',
tref.name 'Referenced Table',
colref.name 'Referenced Column',
fk.delete_referential_action_desc 'Delete Action',
fk.update_referential_action_desc 'Update Action'
FROM
sys.foreign_keys fk
INNER JOIN
sys.foreign_key_columns fkc ON fkc.constraint_object_id = fk.object_id
INNER JOIN
sys.tables tpar ON fk.parent_object_id = tpar.object_id
INNER JOIN
sys.columns colpar ON fkc.parent_object_id = colpar.object_id AND fkc.parent_column_id = colpar.column_id
INNER JOIN
sys.tables tref ON fk.referenced_object_id = tref.object_id
INNER JOIN
sys.columns colref ON fkc.referenced_object_id = colref.object_id AND fkc.referenced_column_id = colref.column_id
它产生的输出类似于:
FK Name Parent Table Parent Column Referenced Table Referenced Column Delete Action Update Action
对我来说效果很好。随意适应您自己的需求。
答案 1 :(得分:1)
默认情况下,依赖关系跟踪器不会显示外键,但如果单击“将约束显示为对象”按钮,它就会显示。
答案 2 :(得分:0)
sp_help <table_name>
输出表引用的外键以及将其列作为外键引用的表。查询sys.tables
并使用sp_help
应该会为您提供所需的所有信息。
答案 3 :(得分:0)
你试过ApexSQL Clean吗?它可以选择直观地显示所有参考,挖掘所有关系等......
如果您的目标是仅创建显示所有数据的文档,您应该查看某些文档工具,并且其中有很多这些工具。我正在使用ApexSQL Doc,但我想你不会错过任何其他大型供应商提供的其他流行工具。
答案 4 :(得分:0)
我在一天结束时使用了Toad for SQL Server。虽然数据库文档可能实际上不是一般标准,但它比Red Gate更加可定制。使用报告生成器,我能够为每个外键以及它们引用的列提供依赖关系......
非常感谢你的所有答案,他们为我提供了宝贵的见解。