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

Tsql SQL Server 2008视图列与基础表列匹配,tsql,sql-server-2008,Tsql,Sql Server 2008,我一直在尝试编写一些SQL代码,当提供视图时,这些代码将定位视图列引用的列,并计算这些列上是否有索引。最终目的是为用户提供查询视图时可以使用的列列表 目前,虽然我只能找到视图使用的列(扩展到它们的索引),但我无法将它们与索引的列进行匹配 例如: 我有TableA,它有5列:ID,Name,Val1,Val2,TableBID 我有TableB,它有三列:ID,Name,code 然后我创建了一个视图,View1,它是: SELECT A.ID, Name, Val1 FROM TableA A

我一直在尝试编写一些SQL代码,当提供视图时,这些代码将定位视图列引用的列,并计算这些列上是否有索引。最终目的是为用户提供查询视图时可以使用的列列表

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

例如:

我有
TableA
,它有5列:
ID
Name
Val1
Val2
TableBID

我有
TableB
,它有三列:
ID
Name
code

然后我创建了一个视图,
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')
我将在其中获得表/列引用的列表,但没有指示哪个视图列引用了什么

是否有任何方法可以访问我需要的信息,请记住我无法进行名称匹配,因为别名中的列可能使用别名,因此可能与基础数据的名称不同


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

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

最终用户不应该关心索引如果“最终目的是为用户提供查询视图时可以使用的列列表”,则只需显示所有列即可。字段上不一定要有索引才能进行查询。它旨在为具有特别高权限的用户提供管理界面,列可以标记为“可搜索”,但此状态的默认值将由索引的存在来确定。它适用于表,但对于视图,因为我无法将视图的别名列与其基础表列进行匹配,所以我无法确定是否存在索引。我可能没有详细解释,但这个功能是为了允许生成查询where子句。通过引导用户使用索引列来减少生成缓慢SQL语句的机会。