我想用一个数据库语句得到,一个存储过程用到了哪个サーバ的那些表?请高手指点.

解决方案 »

  1.   

    SELECT 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'
      

  2.   

    SELECT c.name
    FROM sys.sql_modules a JOIN sys.objects b
    ON a.object_id = b.object_id AND b.TYPE = 'P' and b.name='存储过程名' 
    JOIN sys.objects c on charindex(c.name,a.definition )>0
    and c.type='U'
      

  3.   

    SELECT SCHEMA_NAME(schema_id) AS [架构名],name AS [对象名]
    FROM sys.all_objects 
    WHERE type ='P' and name='过程名' 
    and SCHEMA_NAME(schema_id)='dbo' --架构名
      

  4.   

    --2000 try
    SELECT c.name
    FROM syscomments a JOIN sysobjects b
    ON a.id = b.ID AND b.TYPE = 'P' and b.name='proc_name' 
    JOIN sysobjects c on charindex(c.name,a.text )>0
    and c.type='U'
      

  5.   

    SELECT object_name(A.id) AS [过程名],B.name AS [表名]
    FROM sys.syscomments A
    JOIN SYSOBJECTS B 
     ON object_id('HR_PAI_Save')=A.id
    AND CHARINDEX(B.NAME,A.[text])>0
    AND B.type='U'不好意思,我那个错了。
      

  6.   


    sp_depends 'sp_name';select '['+user_name(o.uid)+'].['+o.name+']',o.type
    from sysdepends d,sysobjects o
    where o.id=d.depid and d.id=OBJECT_ID('sp_name');
      

  7.   

    确实如此。
    sysdepends 系统表中的 depdbid 和 depsiteid 列估计就是用于跨数据、跨实例的依赖对象的。但是,联机丛书中没有明确的定义。而且,根据在 sql server 2005 中的测试,系统表中不会反映跨数据、跨实例依赖的对象。