我如何找出所有正在调用SQL Server 2005中特定用户定义函数的存储过程。
或如何在用户定义的函数中为参数分配无效值,以便当存储过程调用该函数且不将任何值传递给该参数时,该函数将采用默认值。
关于,阿比舍克·in那]
我如何找出所有正在调用SQL Server 2005中的特定用户定义函数的存储过程。或者如何在用户定义函数中为参数分配defult值,以便...
QUERY sys.sql_modules
只需使用此过程即可在存储过程中查找任何文本。
declare @SearchValue as varchar(50)
set @SearchValue = 'GETUTCDATE'
SELECT DISTINCT
s.name+'.'+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
INNER JOIN sys.schemas s ON o.schema_id=s.schema_id
WHERE m.definition Like '%'+@SearchValue+'%'
AND o.Type='P' --<uncomment if you only want to search procedures
ORDER BY 1
如hgulyan所建议使用SYSCOMMENTS表时,您应格外小心...该表将对象的定义分成多行,如果该对象在两个条目中分开,则可能会丢失搜索条件。在SQL 2005和更高版本中,可以改用SYSMODULES表。运行以下代码以查看差异,并查找使用syscomments方法将关键字(即-可能是您的搜索短语)分成多行的情况...
一种“低技术”使用功能查找所有存储过程的方法是使用Management Studio将所有proc的“生成脚本”“生成”一个文件,然后使用编辑器窗口搜索所需的关键字查找。
只需在下面的查询中运行此: