【问题标题】:SQL: how to find a mapping of view columns to table columns?SQL:如何找到视图列到表列的映射?
【发布时间】:2023-03-19 11:50:01
【问题描述】:

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

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

【问题讨论】:

标签: sql sql-server-2008 view


【解决方案1】:

SP_DEPENDS 应该可以工作

SP_DEPENDS 'MyView' 

【讨论】:

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