我修改了一个过程,现在它需要大量的参数。我怎样才能找到程序被调用的每个地方,这样我就可以更新proc传递的参数的数量了?如何在SQL Server 2005/2008中查找过程(或函数)的所有实例
我尝试这样做:
select * from syscomments where text like '%MODIFIED-PROCEDURE-NAME%'
,但我仍然发现其他地方的PROC被称为这个查询没有返回。
我修改了一个过程,现在它需要大量的参数。我怎样才能找到程序被调用的每个地方,这样我就可以更新proc传递的参数的数量了?如何在SQL Server 2005/2008中查找过程(或函数)的所有实例
我尝试这样做:
select * from syscomments where text like '%MODIFIED-PROCEDURE-NAME%'
,但我仍然发现其他地方的PROC被称为这个查询没有返回。
使用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)列,其中文本分成多行。
让自己Red-Gate SQL Search - 这是伟大的,这是免费它只是工作。它可以用来做你正在寻找的东西!去抢它 - 这是值得的黄金重量!
+ 100。尼斯。不知道那是免费的。我喜欢红门。 – NotMe 2010-12-20 19:22:27
如果这里面所有的SQL Server,你可以只是重新编译。
只需创建一个包含所有存储过程和函数的脚本。运行脚本。它会炸弹问题的地方。
(可选)您也可以搜索您创建的脚本。
使用syscomments的问题是文本列是nvarchar(4000),当文本在多行之间分裂时,您会得到截断问题。 @ KM的答案是更好的选择。 – 2010-12-20 19:14:10
[查找所有引用视图]的可能副本(http://stackoverflow.com/questions/1506082/find-all-references-to-view) – 2010-12-20 19:16:55