使用TSQL地发现,在视图中的列从

问题描述:

来到如果我创建一个视图,如原始表:使用TSQL地发现,在视图中的列从

create view View1 as 
select Table1.Column1 from Table1 

有没有办法找到表1只给出名字视图1。通过查询sys.columns来查找View1中的列很容易,其中object_id等于sys.objects中视图名称的object_id,但是如何知道视图中列的来源是什么?

使用@browse_information_mode = 1执行sp_describe_first_result_set。这将返回一个结果集,其中包含每个视图列的基础表名和列名以及其他元数据。对于从表达式导出的视图列,源信息将为NULL,但其他元数据(例如数据类型信息)将包括在内。

EXEC sp_describe_first_result_set 
     @tsql=N'SELECT * FROM dbo.YourView;' 
    , @params = NULL 
    , @browse_information_mode = 1; 

注意sp_describe_first_result_set在SQL Server 2012中引入了所以这不会在以前的SQL Server版本。

+0

太棒了! 如果原来的视图声明 '选择Table1.Column1,Table2.Column1从表1内加入表2上Table1.Column2 = Table2.Column2' 有没有办法告诉大家,表1是基表的“从'是基于? – tdinpsp

+0

@tdinpsp,元数据将显示视图公开的列的来源。内连接查询没有真正的“基”表概念;结果将是相同的,无论在FROM或JOIN中是否指定了表,并且源将在SELECT语句中指定。 –