如何知道表和视图之间的哪些列对应

时间:2013-03-07 12:26:58

标签: c# .net sql sql-server database

我在SQL Server中有一个视图,并希望通过我的C#应用​​程序将此视图与其他表一起加入。为了实现这一点,我需要在基础表中找出各个视图的字段对应的列。例如,我可以有这样的观点:

CREATE VIEW [View A]     
AS   
   SELECT Children.Child_ID, Social_Workers.Social_ID 
   FROM Children 
   INNER JOIN Social_Workers 
     ON Children.Social_ID = Social_Workers.Social_ID

我可能想要将表加入上面的视图。为了实现这一点,我的C#应用​​程序必须知道哪些是关系中所需的外键和主键字段,因此生成如下所示的SQL代码:

SELECT [View A].Child_ID, 
       Sponsors.User_ID 
FROM  [View A]  
INNER JOIN Sponsors 
 ON [View A].Child_ID = Sponsors.Child_ID

我有found a way来检索视图中的基础表,但我不确定如何解决其余问题。

2 个答案:

答案 0 :(得分:0)

如果我理解您的要求,您可以尝试使用Find the real column name of an alias used in a view?

中的查询

答案 1 :(得分:0)

我认为以下内容可能有所帮助,特别是referenced_entity_name和referenced_minor_name列。

select * from sys.dm_sql_referenced_entities( 'dbo.ViewA', 'object' ) ;

这个DMV是在SQL Server 2008中添加的,所以如果你有早期版本,没有帮助我很抱歉。