查找插入特定表的存储过程

use*_*041 10 sql database sql-server stored-procedures sql-server-2008

有没有办法找到哪些存储过程在表中创建条目.比如说:

存储过程A在表A中
插入
存储过程B插入表A 存储过程C插入表B中

我想查询返回存储过程A和存储过程B的名称.

我现在得到了这个,但它所做的就是找到存储过程.我认为找到存储过程是一个很好的起点.


select schema_name(schema_id) as [schema], 
       name
from sys.procedures
where name like '%Item%' and name like '%Create%'

我正在使用Microsoft SQL 2008

JNK*_*JNK 12

您可以搜索sys.sql_modules包含所有过程和视图的文本:

SELECT OBJECT_NAME(object_id)
FROM sys.sql_modules
WHERE definition LIKE '%TablenameIWanttoFind%'
Run Code Online (Sandbox Code Playgroud)

如果你确定的措辞,你可以搜索类似的东西 'INSERT INTO mytable'


Mar*_*ith 7

该问题询问如何查找插入特定表的存储过程.

如果为多个选择引用了表,则搜索包含该名称的存储过程可能会带来很多误报.

sys.sql_dependencies不推荐使用,但在此处可能很有用,因为它包含一个is_updated也设置1为插入的标志.

SELECT QUOTENAME(OBJECT_SCHEMA_NAME(object_id)) + '.' + QUOTENAME(OBJECT_NAME(object_id))
FROM   sys.sql_dependencies
WHERE  referenced_major_id = OBJECT_ID('YourTable')
       AND is_updated = 1
GROUP  BY object_id 
Run Code Online (Sandbox Code Playgroud)


小智 6

为什么不使用以下查询。

select O.name from sysobjects O
Join Syscomments  C
on O.id=C.id
Where C.text like '%insert into%Table_name%'
Run Code Online (Sandbox Code Playgroud)

从这个查询中,您可以从字面上找到任何包含特定文本的过程。