我想从我所有的数据库存储过程中搜索文本。我使用下面的 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]
中搜索[ABD]
,但未给出正确的结果。如何更改查询以实现此目的?
转义方括号:
...
WHERE m.definition Like '%\[ABD\]%' ESCAPE '\'
然后,方括号将被视为字符串文字,而不是通配符。
试试这个要求:
询问
SELECT name
FROM sys.procedures
WHERE Object_definition(object_id) LIKE '%strHell%'
您是否尝试过使用某些第三方工具进行搜索?那里有几个免费的,过去节省了我很多时间。
以下是我成功使用的两个 SSMS 插件。
ApexSQL 搜索 –搜索数据库中的模式和数据,并具有附加功能,如依赖跟踪等。
SSMS 工具包 –具有与上一个和其他几个很酷的功能相同的搜索功能。对于 SQL Server 2012 不是免费的,但仍然非常实惠。
我知道这个答案与问题(并非更具体)并非 100%相关,但希望其他人会发现这很有用。