SQL:如何查找视图列到表列的映射?

时间:2014-05-22 21:58:43

标签: sql sql-server-2008 view

在Microsoft SQL Server 2008 R2中,假设我的数据库具有以下视图:

    create view [dbo].[MyView]
    (
        [MyColumnA]
    )
    AS
    (SELECT MyColumnB FROM MyTable)

现在假设我只知道有一个名为MyView的视图有一个名为MyColumnA的列,但我不知道它映射到MyTable.ColumnB。确定MyView.ColumnA映射到哪个表和列的最简单/最快的方法是什么?有查询可以告诉我这个吗?类似的东西:

    SELECT TABLE_NAME, TABLE_COLUMN_NAME 
    FROM INFORMATION_SCHEMA.VIEW_MAPPINGS 
    WHERE VIEW_NAME = 'MyView' AND VIEW_COLUMN_NAME = 'MyColumnA'

此查询将返回[MyTable,MyColumnB]。

目前我必须在SSMS对象资源管理器中找到该视图,右键单击它并生成创建脚本,然后搜索视图列的名称。然后我注意它在视图中的顺序位置(比如第4列),并且必须在select语句中找到相应的第4列。 select语句很可能使用表别名,因此我必须查看JOIN语句以根据别名查找表名。

这是非常耗时的,我希望找到一种更快捷的方式,如果不是通过查询,那么可能通过一些比我更快或更容易的其他过程。

1 个答案:

答案 0 :(得分:2)

SP_DEPENDS应该可以工作

SP_DEPENDS 'MyView'