如果我创建一个视图,例如:
create view View1 as
select Table1.Column1 from Table1
有没有办法找到只给名为View1的Table1。通过查询sys.columns来查找View1中的列很容易,其中object_id等于sys.objects中视图名称的object_id,但是如何判断视图中列的基础表是什么来自哪里?
答案 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的早期版本中不起作用。