我想从我所有的数据库存储过程中搜索一个文本。我使用下面的SQL:

SELECT DISTINCT
       o.name AS Object_Name,
       o.type_desc
FROM sys.sql_modules m
       INNER JOIN
       sys.objects o
         ON m.object_id = o.object_id
WHERE m.definition Like '%[ABD]%';

我想在包括方括号在内的所有存储过程中搜索[ABD],但它没有给出正确的结果。我如何改变我的查询来实现这一点?


当前回答

你有没有试过使用一些第三方工具来进行搜索?有几个可用的免费软件,在过去为我节省了大量的时间。

下面是我成功使用的两个SSMS插件。

ApexSQL搜索-搜索数据库中的模式和数据,并具有额外的功能,如依赖跟踪和更多…

SSMS工具包-具有与前一个相同的搜索功能和其他一些很酷的功能。不是免费的SQL Server 2012,但仍然非常实惠。

我知道这个答案不是100%与问题相关(更具体),但希望其他人会发现这个有用。

其他回答

你有没有试过使用一些第三方工具来进行搜索?有几个可用的免费软件,在过去为我节省了大量的时间。

下面是我成功使用的两个SSMS插件。

ApexSQL搜索-搜索数据库中的模式和数据,并具有额外的功能,如依赖跟踪和更多…

SSMS工具包-具有与前一个相同的搜索功能和其他一些很酷的功能。不是免费的SQL Server 2012,但仍然非常实惠。

我知道这个答案不是100%与问题相关(更具体),但希望其他人会发现这个有用。

SELECT DISTINCT 
   o.name AS Object_Name,
   o.type_desc
FROM sys.sql_modules m        INNER JOIN        sys.objects o 
     ON m.object_id = o.object_id WHERE m.definition Like '%[String]%';
Select distinct OBJECT_NAME(id) from syscomments where text like '%string%' AND OBJECTPROPERTY(id, 'IsProcedure') = 1 

你也可以用这个:

SELECT * 
FROM INFORMATION_SCHEMA.ROUTINES 
WHERE ROUTINE_DEFINITION like '%Search_String%'

它可能对你有帮助!

SELECT DISTINCT 
      A.NAME AS OBJECT_NAME,
      A.TYPE_DESC
      FROM SYS.SQL_MODULES M 
      INNER JOIN SYS.OBJECTS A ON M.OBJECT_ID = A.OBJECT_ID
      WHERE M.DEFINITION LIKE '%['+@SEARCH_TEXT+']%'
      ORDER BY TYPE_DESC