【问题标题】:How to Get list of views with underlying Tables along with their owner information如何获取具有基础表的视图列表及其所有者信息
【发布时间】:2017-12-12 16:58:52
【问题描述】:

我想获取数据库中所有视图及其基础表的列表。基础表可以来自其他数据库。所以,我也想知道这些表的数据库名称。那么,有人可以帮忙吗?

我尝试了以下事情:

选择 * FROM [INFORMATION_SCHEMA]。[VIEW_TABLE_USAGE]

但是,它没有显示表的任何数据库信息。

我还想知道数据库中存在的那些表和视图的所有者信息。那么,有人可以帮忙吗?

【问题讨论】:

    标签: sql-server sql-server-2012


    【解决方案1】:

    依赖关系的信息可以通过依赖函数和视图获得

    这是一个使用 sys.sql_expression_dependencies 的示例:

    SELECT DISTINCT 
        s.name AS view_schema_name,
        v.name AS view_name,
        dp.name AS [owner],
        d.referenced_entity_name,
        d.referenced_database_name,
        d.referenced_server_name
    FROM 
        sys.sql_expression_dependencies d
    INNER JOIN
        sys.views v ON d.referencing_id = v.object_id
    INNER JOIN
        sys.schemas s ON v.schema_id = s.schema_id
    INNER JOIN
        sys.database_principals dp ON s.principal_id = dp.principal_id
    

    【讨论】:

      【解决方案2】:

      此查询获取视图的表([VIEW_CATALOG] 是数据库):

      SELECT [VIEW_CATALOG] AS [database]
             , *
      FROM   [INFORMATION_SCHEMA].[VIEW_TABLE_USAGE] AS [VIEW_TABLE_USAGE]
             LEFT JOIN [sys].[tables] AS [tables]
                    ON [tables].[name] = [VIEW_TABLE_USAGE].[TABLE_NAME]
                       AND object_schema_name([tables].[object_id]) = [VIEW_TABLE_USAGE].[TABLE_SCHEMA]; 
      

      本主题告诉你如何获取所有者信息:List table names, owner, schema and columns in SQL server database

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-03
        • 2011-12-04
        • 2015-08-18
        • 1970-01-01
        • 2017-12-23
        • 2010-12-21
        • 2014-12-19
        相关资源
        最近更新 更多