【问题标题】:SQL Server : report of referenced tables & foreign keys [closed]SQL Server:引用表和外键的报告[关闭]
【发布时间】:2012-12-29 02:31:25
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

    标签: sql-server documentation foreign-keys redgate


    【解决方案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
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 是的,但我想以可读的格式输出它...我知道我可以应用自己的格式并编写自己的代码来完成所有这些,但它似乎也是很麻烦。
        【解决方案4】:

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

        如果您的目标是只创建显示所有数据的文档,您应该查看一些文档工具,其中有很多。我正在使用 ApexSQL Doc,但我猜您使用其他大供应商提供的任何其他流行工具都不会出错。

        【讨论】:

        • 试试看,谢谢!
        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 2016-03-09
          • 1970-01-01
          • 1970-01-01
          • 2011-05-25
          • 2012-03-21
          • 1970-01-01
          • 1970-01-01
          • 2014-03-21
          • 1970-01-01
          相关资源
          最近更新 更多