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)
对于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)