2010-12-20 43 views
3

我修改了一个过程,现在它需要大量的参数。我怎样才能找到程序被调用的每个地方,这样我就可以更新proc传递的参数的数量了?如何在SQL Server 2005/2008中查找过程(或函数)的所有实例

我尝试这样做:

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

,但我仍然发现其他地方的PROC被称为这个查询没有返回。

+0

使用syscomments的问题是文本列是nvarchar(4000),当文本在多行之间分裂时,您会得到截断问题。 @ KM的答案是更好的选择。 – 2010-12-20 19:14:10

+0

[查找所有引用视图]的可能副本(http://stackoverflow.com/questions/1506082/find-all-references-to-view) – 2010-12-20 19:16:55

回答

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(最大)。其他类似的视图具有nvarchar(4000)列,其中文本分成多行。

+1

+1 - 您也可以使用'sp_depends',但它不会显示数据库之间的依赖关系。 – JNK 2010-12-20 19:19:49

+0

这工作得很好!谢谢! – Ramy 2010-12-20 19:23:57

5

让自己Red-Gate SQL Search - 这是伟大的,这是免费它只是工作。它可以用来做你正在寻找的东西!去抢它 - 这是值得的黄金重量!

alt text

+0

+ 100。尼斯。不知道那是免费的。我喜欢红门。 – NotMe 2010-12-20 19:22:27

0

如果这里面所有的SQL Server,你可以只是重新编译。

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

(可选)您也可以搜索您创建的脚本。

相关问题