使用TSql查找视图中的列来自的原始表

时间:2017-04-08 01:25:04

标签: sql-server

如果我创建一个视图,例如:

create view View1 as
select Table1.Column1 from Table1

有没有办法找到只给名为View1的Table1。通过查询sys.columns来查找View1中的列很容易,其中object_id等于sys.objects中视图名称的object_id,但是如何判断视图中列的基础表是什么来自哪里?

1 个答案:

答案 0 :(得分:4)

使用@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;

请注意,SQL Server 2012中引入了sp_describe_first_result_set,因此这在SQL Server的早期版本中不起作用。