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:如何找到视图列到表列的映射?的主要内容,如果未能解决你的问题,请参考以下文章