SQL 2005 - 搜索存储过程的文本(并非所有的文本正在搜索)(SQL 2005 - Sear

2019-09-21 21:22发布

下面的代码位似乎并没有被搜索整个常规定义。

代码块1:

select top 50 * from information_schema.routines
where routine_definition like '%09/01/2008%' and specific_Name like '%NET'

代码块2:

SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES 
WHERE ROUTINE_DEFINITION LIKE '%EffectiveDate%' AND ROUTINE_TYPE='PROCEDURE' and ROUTINE_NAME like '%NET'

我知道一个事实,即在大多数情况下SQL工作的这些位。 问题是这样的:当我运行本作里面埋葬的是在几个存储过程线〜800“EFFECTIVEDATE”,这些存储过程从来没有在结果中显示。 这是因为如果“喜欢”只搜索这么深。

在解决这个任何提示?

我想搜索整个存储过程中指定的文本。

谢谢!

Answer 1:

select * 
FROM   INFORMATION_SCHEMA.ROUTINES 
WHERE  OBJECTPROPERTY(OBJECT_ID(SPECIFIC_NAME),'IsMSShipped') =0 
       and OBJECT_DEFINITION(OBJECT_ID(SPECIFIC_NAME)) like '%EffectiveDate%' 
       AND ROUTINE_TYPE='PROCEDURE'
       AND ROUTINE_NAME like '%NET'

使用对象定义来代替。



Answer 2:

只是为了澄清为什么过程文本被截断 :

ROUTINE_DEFINITION为nvarchar(4000)

返回函数的定义文本或存储过程的第一4000个字符 ,如果函数或存储过程是不加密的。 否则,返回NULL。

为了确保您获得完整的定义,查询OBJECT_DEFINITION功能或定义列sys.sql_modules目录视图。



Answer 3:

这里有不同的方法,如果你正在寻找对SQL Server数据库的检索功能。 基本上从展鹏免费提供的搜索工具。

免费从展鹏“搜索”



Answer 4:

速度非常快,活,方便的直接链接http://www.red-gate.com/products/SQL_Search/index.htm



文章来源: SQL 2005 - Search stored procedures for text (Not all text is being searched)