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]'的整个解决方案,看看他们是否可能不会使用存储过程进行此调用,而且没有...在任何地方找不到它.
也可以制作一个存储过程!
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)
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |