使用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版本。
太棒了! 如果原来的视图声明 '选择Table1.Column1,Table2.Column1从表1内加入表2上Table1.Column2 = Table2.Column2' 有没有办法告诉大家,表1是基表的“从'是基于? – tdinpsp
@tdinpsp,元数据将显示视图公开的列的来源。内连接查询没有真正的“基”表概念;结果将是相同的,无论在FROM或JOIN中是否指定了表,并且源将在SELECT语句中指定。 –