Sql server 存储过程SQL Server中的文本搜索

Sql server 存储过程SQL Server中的文本搜索,sql-server,Sql Server,有人知道SQL Server中用于文本搜索的脚本吗?我想从SQL Server中的所有存储过程中搜索文本,有人知道我应该使用什么脚本吗?更新:有几种等效方法。这里有一个: SELECT OBJECT_NAME(object_id) FROM sys.sql_modules WHERE Definition LIKE '%searchtext%' AND OBJECTPROPERTY(object_id, 'IsProcedure') = 1 您还可

有人知道SQL Server中用于文本搜索的脚本吗?我想从SQL Server中的所有存储过程中搜索文本,有人知道我应该使用什么脚本吗?

更新:有几种等效方法。这里有一个:

SELECT 
    OBJECT_NAME(object_id) 
FROM 
    sys.sql_modules 
WHERE 
    Definition LIKE '%searchtext%' 
    AND OBJECTPROPERTY(object_id, 'IsProcedure') = 1 
您还可以使用:

select distinct object_name(id) from sys.syscomments where text like '%SearchTextHere%'

是否要通过存储过程本身搜索文本

还是表格数据


如果是表数据,那么信息模式如何?例程或系统注释不可靠

这两个文本字段都是nvarchar(4000)(仅限多行syscomments)。因此,您的搜索文本可能会丢失在syscomments的边界上,或者永远找不到SCHEMA.ROUTINES的信息

是nvarchar(最大值)

编辑,2011年10月

更新这个答案


是一个非常有用的免费SSMS插件。

-1这与sys.sql\u模块或对象\u定义不同,因为它可能无法工作。。。例程_定义可能没有while进程code@Mitch麦特:我发帖子的时候错了:你只是编辑来纠正它。你否决了我的正确答案…@gbn-如果你否决了这个答案,你应该否决syscomments的答案。事实上,你没有让它看起来很有选择性。我可以理解米奇对此感到恼火,我知道我会的。@Mitch Wheat,@Lieven:对76k代表用户的隐含信任使其成为权威答案,比300代表用户的答案更重要。对我来说,投票否决300代表用户似乎不公平(实际上,答案无论如何都会被忽略)。如果Jon Skeet发布了一个“syscomments”,那么再多的反例也无助于纠正错误信息。不管怎样,投反对票removed@gbn:很公平,我认为是最坏的。与
sys.syscomments
相比,使用
sys.sql\u modules
更适合我的特性中的一些缺陷,原因如下所述<如果定义文本的长度超过4000个字符,则code>sys.syscomments会在多行上中断存储过程的定义。+1用于阻止使用
sys.syscomments
。关于为什么我们应该使用
sys.sql\u模块
,博客详细介绍了一些其他原因。
SELECT
    OBJECT_NAME(object_id)
FROM
    sys.sql_modules
WHERE
    definition LIKE '%mytext%'