查询SQL Server上存储过程的内容

Ben*_*Ben 29 t-sql sql-server sql-server-2005 relational-database

我正在探索一个遗留数据库系统,对其内部知识知之甚少.我想找到调用另一个存储过程的所有存储过程A.

怎么做到最好?

我可以写这样的伪代码:

select name from AllStoredProcedures as Asp where Asp.TextualContent contains 'A'
Run Code Online (Sandbox Code Playgroud)

Asp.TextualContent 表示SP中包含的实际SQL.

Mar*_*ith 52

SELECT
    OBJECT_NAME(OBJECT_ID),
    definition
FROM
    sys.sql_modules
WHERE
    objectproperty(OBJECT_ID, 'IsProcedure') = 1
AND definition LIKE '%Foo%' 
Run Code Online (Sandbox Code Playgroud)


Bog*_*ean 6

对于SQL Server 2005/2008:

SELECT  s.name SchemaName
        ,o.name RoutineName
        ,o.[type] RoutineType
        ,procs.*
FROM    sys.sql_modules procs
INNER JOIN sys.objects o ON procs.object_id = o.object_id 
INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
WHERE   procs.[definition] LIKE '%A%'
--AND       o.[type] = 'P' --'P' for stored procedures
Run Code Online (Sandbox Code Playgroud)