0

我想生成一个显示数据库中所有表的报告。对于每个表,报告将记录它所引用的表以及它所引用的表。还包括用于引用的外键。

我之前尝试过使用Red Gate SQL Dependency Tracker,它给了我一个易于阅读、可用的报告——缺少的只是每个表关联的外键。

如果有人可以成为一个很棒的替代软件,可以做我想做的事情,或者提供某种形式的替代方法,我将非常感激!我这样做的主要目的实际上是为客户提供某种形式的可读模式,以便客户能够理解数据库内的互连......我尝试过使用数据库图表,但由于可读性。

谢谢!

4

5 回答 5

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

这对我来说非常有效。随意适应您自己的需求。

于 2013-01-15T05:35:25.963 回答
1

Dependency Tracker 默认情况下不显示外键,但如果单击“将约束显示为对象”按钮就会显示。

于 2013-01-15T09:17:25.373 回答
0

sp_help <table_name>输出表引用的外键以及引用其列作为外键的表。查询sys.tables和使用sp_help应该为您提供所需的所有信息。

于 2013-01-15T02:28:32.583 回答
0

你试过ApexSQL Clean吗?它可以选择直观地显示所有参考,挖掘所有关系等等......

如果您的目标是只创建显示所有数据的文档,您应该查看一些文档工具,并且有很多这样的工具。我正在使用 ApexSQL Doc,但我想你不会错用来自其他大供应商的任何其他流行工具。

于 2013-02-03T13:46:18.033 回答
0

一天结束时,我使用了 Toad for SQL Server 。虽然数据库文档实际上可能不是 ace 标准,但它比 Red Gate 的可定制性更高。使用报告生成器,我能够提出每个外键的依赖关系,以及它们引用的列......

非常感谢您的所有回答,它们为我提供了宝贵的见解。

于 2013-02-24T20:59:51.420 回答