比如
create view v_a
as
select a.*,b.*,c.* 
from t1 a,t2 b,v_v1 c 
where a.id=b.id and b.id=c.id 然后我要查出结果为
t1,
t2,
v_v1
三列结果。其中t1,t2是基础表,v_v1是视图

解决方案 »

  1.   

    变通的办法是到Sys.SQL_Modules.Definition里去解析。。也可能有其他系统视图有吧,没关注
      

  2.   

    参考:http://msdn.microsoft.com/zh-cn/library/ms174402.aspx
      

  3.   


    这个我测试了,不完整,不知道要满足什么条件sys.sql_dependencies中才会有记录。反正是有些有,有些没有。
      

  4.   

    select * from sys.sql_expression_dependencies 
    where referencing_id = object_id(N'v_a') 
    AND [referenced_class] = 1
    and [is_ambiguous] = 0
      

  5.   

    select distinct 
           v.name '视图的名称',         o.name '这个视图引用到的对象名称'       from sys.views v 
    inner join sys.sql_dependencies d
            on d.object_id = v.object_id
            
    inner join sys.objects o
            on o.object_id = d.referenced_major_id
            
    where v.name = 'v_a'  --视图名称
      

  6.   

    上面的代码可以在 SQL Server 2005中运行
      

  7.   

    select distinct 
           v.name '视图的名称',         o.name '这个视图引用到的对象名称'       from sys.views v 
    inner join sys.sql_dependencies d
            on d.object_id = v.object_id
            
    inner join sys.objects o
            on o.object_id = d.referenced_major_id
            
    where v.name = 'v_a'  --视图名称这个不行啊,视图中的视图查不出来。
      

  8.   

    select distinct 
           v.name '视图的名称',         o.name '这个视图引用到的对象名称'       from sys.views v 
    inner join sys.sql_dependencies d
            on d.object_id = v.object_id
            
    inner join sys.objects o
            on o.object_id = d.referenced_major_id
            
    where v.name = 'v_a'  --视图名称这个不行啊,视图中的视图查不出来。
    如果你想查出视图中引用的视图中的表用 sql_dependencies 是不行的,单层的依赖。
      

  9.   

    select distinct 
           v.name '视图的名称',         o.name '这个视图引用到的对象名称'       from sys.views v 
    inner join sys.sql_dependencies d
            on d.object_id = v.object_id
            
    inner join sys.objects o
            on o.object_id = d.referenced_major_id
            
    where v.name = 'v_a'  --视图名称这个不行啊,视图中的视图查不出来。你是想查询到v_a这个视图中的这个视图v_v1,引用了哪些对象是吧。下面的可以,不仅能显示v_v1,还能显示v_v1引用的对象。WITH t   --递归查询
    AS
    (
    SELECT object_id,
           referenced_major_id,
           0 AS level
    FROM sys.sql_dependenciesUNION ALLSELECT t.object_id,
           d.referenced_major_id,
           LEVEL + 1 AS level       
    FROM t
    INNER JOIN sys.sql_dependencies d
            ON t.referenced_major_id = d.object_id
    )
    select distinct 
           v.name '视图的名称',         o.name '这个视图引用到的对象名称'       from sys.views v 
    inner join t d
            on d.object_id = v.object_id
            
    inner join sys.objects o
            on o.object_id = d.referenced_major_id
            
    where v.name = 'v_a'  --视图名称
      

  10.   

    不是这个意思。是sys.sql_dependencies的问题,视图中有些引用对象不在sys.sql_dependencies中,我也不知道为什么不在sys.sql_dependencies中,反正我查了很多视图,sys.sql_dependencies中记录的引用对象都不完整。我改装2012了,用sys.sql_expression_dependencies实现了。方法如下:
    使用sql命令查询视图中所有引用的基础表
    写的复杂了些。