下面的代码位似乎并没有被搜索整个常规定义。
代码块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”,这些存储过程从来没有在结果中显示。 这是因为如果“喜欢”只搜索这么深。
在解决这个任何提示?
我想搜索整个存储过程中指定的文本。
谢谢!
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'
使用对象定义来代替。
只是为了澄清为什么过程文本被截断 :
ROUTINE_DEFINITION为nvarchar(4000)
返回函数的定义文本或存储过程的第一4000个字符 ,如果函数或存储过程是不加密的。 否则,返回NULL。
为了确保您获得完整的定义,查询OBJECT_DEFINITION
功能或定义列sys.sql_modules
目录视图。
这里有不同的方法,如果你正在寻找对SQL Server数据库的检索功能。 基本上从展鹏免费提供的搜索工具。
免费从展鹏“搜索”
速度非常快,活,方便的直接链接http://www.red-gate.com/products/SQL_Search/index.htm
文章来源: SQL 2005 - Search stored procedures for text (Not all text is being searched)