SQL Server 2008 - 查找特定命令/调用/文本

Pat*_*ick 2 c# sql-server sql-server-2008

我需要在特定的表中找到一个insert语句.不幸的是,应用程序不是我的开始,数据库中有超过100个存储过程,我已经逐步完成代码写下每个存储过程名称从开始到结束此过程,我仍然无法找到它.我知道这个过程必须在某个地方发生,因为依赖它的另一个进程可以正常工作.我找不到它.

是否有某种TSQL允许我在多个存储过程中搜索特定的文本行...更具体地说,"INSERT INTO [tablename]"

UPDATE

我尝试过使用:

 SELECT routine_name, routine_type  
 FROM INFORMATION_SCHEMA.ROUTINES  
 WHERE ROUTINE_DEFINITION LIKE '%INSERT INTO [tablename]%' 
Run Code Online (Sandbox Code Playgroud)

直接将[tablename]替换为我的表名.这将返回0行.

我确实有一个具有该行的精确行的过程,我会假设它将在上面的查询中返回,但它根本没有带回任何东西.

更新#2

在使用redgate sql搜索工具(使用INSERT INTO [tablename])后,它返回1 sp,但我仍然否认这是正确的,因为某些tsql(在sp的末尾它的丢弃表仍然是在数据库中......)(这是我在sql中体验的经验)

我仍然无法找到这个被调用的地方......

更新#3

我刚刚搜索了'INSERT INTO [tablename]'的整个解决方案,看看他们是否可能不会使用存储过程进行此调用,而且没有...在任何地方找不到它.

Sir*_*mon 5

也可以制作一个存储过程!

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO 

/*
exec sp_find_procs_containing 'insert into tablename'
*/

CREATE PROCEDURE [dbo].[sp_find_procs_containing]    
@search VARCHAR(100) = ''
AS
SET @search = '%' + @search + '%'
SELECT         ROUTINE_NAME,    ROUTINE_DEFINITION
FROM        
INFORMATION_SCHEMA.ROUTINES
WHERE        
ROUTINE_DEFINITION LIKE @search
ORDER BY ROUTINE_NAME

GO
Run Code Online (Sandbox Code Playgroud)