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

Posted

技术标签:

【中文标题】SQL:如何找到视图列到表列的映射?【英文标题】:SQL: how to find a mapping of view columns to table columns? 【发布时间】:2014-05-22 21:58:42 【问题描述】:

在 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 语句以根据别名查找表名。

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

【问题讨论】:

见***.com/questions/10048056/… 【参考方案1】:

SP_DEPENDS 应该可以工作

SP_DEPENDS 'MyView' 

【讨论】:

这种工作 - 它确实显示了哪些列映射到某处的视图,但我没有显示实际映射,这是 OP(和我)正在寻找的。我希望有一种方法可以强制您生成的视图定义在“SELECT W as X, Y as Z, etc”布局中,而不是上面 OP 显示的布局,但这似乎是不可能的。 @SqlRyan 是的。我正在寻找完全相同的东西。如果您找到方法,请告诉我。 @PouyaBCD 是的,我从来没有找到这个问题的答案,但仍然希望......四年后:)

以上是关于SQL:如何找到视图列到表列的映射?的主要内容,如果未能解决你的问题,请参考以下文章

SQL 表列到数组

Excel从列到列的映射

如何通过 sql loader 设置要加载到表列中的固定长度

如何导入 xls 并将行分配给表列?

T-SQL 枢轴?从行值创建表列的可能性

RODBC sqlSave() 和映射列名