如何取得一个库下的所有存储过程所用到的表名
比如有一个库叫TEST,里面有100本存储过程,每本存储过程里都会用到一些表,
如何把这100本存储过程里用到的所有表名做一个汇总?通过什么可以实现?
我只知道单个存储过程点开察看。
帮帮忙,谢谢!

解决方案 »

  1.   

    SELECT DISTINCT OBJECT_NAME(object_id),OBJECT_NAME(referenced_major_id)
     FROM sys.sql_dependencies WHERE object_id=OBJECT_ID('存储过程名')
      

  2.   

    SELECT DISTINCT OBJECT_NAME(a.object_id) as [存储过程],OBJECT_NAME(referenced_major_id) as [表]
     FROM sys.sql_dependencies a join sys.objects  b on a.object_id=b.object_id
     where b.type='p'
      

  3.   

    SELECT definition,
           c.name
    FROM sys.sql_modules a JOIN sys.objects b 
    ON a.object_id = b.object_id AND b.TYPE = 'P' 
                           JOIN sys.objects c
    ON charindex(c.name,a.definition)>0 AND c.type='U'
      

  4.   


    在小梁基础上加点料,查所有的。DECLARE @sql varchar(8000)SELECT @sql=ISNULL(@SQL+' UNION ALL ','')+'
    SELECT DISTINCT [存储过程]=OBJECT_NAME(object_id),
    [表名]=OBJECT_NAME(referenced_major_id)
    FROM sys.sql_dependencies WHERE object_id=OBJECT_ID('''+NAME+''')'
    FROM SYS.OBJECTS WHERE TYPE='P'EXEC(@SQL)