SQL 服务器查看存储过程完整关系

SQL Server view Stored Procedures full relationships

我正在使用 SQLSEVER 2012 Management Studio 在 SQLSERVER 2012 Express 数据库上处理一堆非常复杂的存储过程。

例如,我有一个存储过程 SP1 调用另一个存储过程 SP2,SP2 调用 SP3,SP3 调用 SP4 ...

我希望看到一个图表,它可以为我提供这些存储过程与这些存储过程中使用的所有表之间的完整关系。

我尝试了 SQL Server management studio 提供的查看依赖项工具,但有时当我单击所选存储过程的 "View Dependencies" 时它会丢失后代存储过程。此外,它无法显示这些存储过程之间关系的全貌。

有什么工具可以帮我解决这个问题吗?或者对如何理解复杂的关系存储过程有什么建议吗?

您可以围绕 sys.objects 加入 sys.sql_modules 构建递归查询(定义字段包含 sproc 代码)并为自己构建一个依赖关系树。

我发现以下查询很有用,希望对您有所帮助。

select      
        distinct 
        ObjJectType=
        case Obj.xType
        When 'V' then
            'VIEW'
        When 'P' then
            'PROC'
        When 'D' then
            'INDEX'
        When 'TF' then
            'TABLE FUNCTION'
        When 'FN' then
            'FUNCTION'
        When 'U' then
            'TABLE'
        When 'F' then
            'FK CONSTRAINT'
        When 'PK' then
            'PK CONSTRAINT'
        When 'TR' then
            'TRIGGER'
        When 'S' then
            'SYSTEM OBJECT'
        end ,
        Obj.name
from 
        syscomments Com inner join sysobjects Obj
  on  Com.id = Obj.id
where 
        Com.text like '%sp_name%' 
order by Obj.name