如何在SQL Server 2005/2008中查找过程(或函数)的所有实例

时间:2010-12-20 19:04:57

标签: sql-server

我修改了一个程序,它现在需要更多的参数。如何找到调用过程的每个位置,以便更新proc传递的参数个数?

我试过了:

select * from syscomments where text like '%MODIFIED-PROCEDURE-NAME%'

但我仍然在寻找其他地方调用此查询未返回的过程。

3 个答案:

答案 0 :(得分:8)

使用sys.sql_modules:

SELECT
    OBJECT_SCHEMA_NAME(m.object_id) + '.' + OBJECT_NAME(m.object_id)
    FROM sys.sql_modules  m
    WHERE m.definition like '%whatever%'

sys.sql_modules.definition是nvarchar(max)。其他类似的视图有nvarchar(4000)列,其中文本被分成多行。

答案 1 :(得分:5)

让自己Red-Gate SQL Search - 这很棒,它是免费,它只是有效。它可以用来做你正在寻找的东西!抓住它 - 它的重量是金价!

alt text

答案 2 :(得分:0)

如果这完全在SQL服务器内部,您可以重新编译它。

只需创建一个包含所有存储过程和函数的脚本即可。运行脚本。它会轰炸问题所在。

或者,您也可以只搜索您创建的脚本。