SQL Server 2008视图列与基础表列匹配

时间:2010-04-20 14:05:45

标签: tsql sql-server-2008

我一直在尝试编写一些SQL代码,当提供视图时,它会找到视图列引用的列,如果这些列上有任何索引,则会计算出来。最终目的是为用户提供查询视图时可以使用的列列表。

目前虽然我只能找到视图使用的列(以及扩展名的索引),但我无法将它们与索引列相匹配。

例如:

我有TableA,其中有5列:IDNameVal1Val2TableBID

我有TableB,其中包含3列:IDNameCode

然后我创建了一个视图View1,即:

SELECT A.ID,
Name,
Val1
FROM TableA A
INNER JOIN TableB ON A.TableBID = B.ID
WHERE B.Code = 'AAA'

当我使用以下方法查询引用时:

SELECT *
FROM sys.dm_sql_referenced_entities('dbo.View1', 'OBJECT')

我将获得其中的表/列引用列表,但没有指出哪个视图列引用了什么。

有没有办法可以访问我需要的信息,请记住我不能进行名称匹配,因为Alias中的列可能使用别名,因此可能与基础数据的名称不同。

如果有任何影响,我正在使用SQL Server 2008 SP1。

1 个答案:

答案 0 :(得分:-1)

使用每个视图列的唯一组合 Tablename +'_'+ ColumnName 重命名视图中的列。然后,您可以将视图列拆分到表和列上。