我一直在尝试编写一些SQL代码,当提供视图时,它会找到视图列引用的列,如果这些列上有任何索引,则会计算出来。最终目的是为用户提供查询视图时可以使用的列列表。
目前虽然我只能找到视图使用的列(以及扩展名的索引),但我无法将它们与索引列相匹配。
例如:
我有TableA
,其中有5列:ID
,Name
,Val1
,Val2
,TableBID
我有TableB
,其中包含3列: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')
我将获得其中的表/列引用列表,但没有指出哪个视图列引用了什么。
有没有办法可以访问我需要的信息,请记住我不能进行名称匹配,因为Alias中的列可能使用别名,因此可能与基础数据的名称不同。
如果有任何影响,我正在使用SQL Server 2008 SP1。
答案 0 :(得分:-1)
使用每个视图列的唯一组合 Tablename +'_'+ ColumnName 重命名视图中的列。然后,您可以将视图列拆分到表和列上。