SQL Server 2008查询以搜索所有存储过程以查找特定参数名称

时间:2011-08-04 15:09:41

标签: sql-server sql-server-2008

我有一个列name varchar(8) ....我想将大小更改为20 ...并且几乎有大约100个存储过程。

我需要在名称作为参数传递的所有存储过程中更改@name的大小。

5 个答案:

答案 0 :(得分:9)

您可以右键单击该表并选择View Dependancies - 这将为您提供需要考虑更新的所有相关对象的列表。

如果您想搜索所有列,您可以尝试除SQL搜索之外的另一个工具ApexSQL Search,这也是免费的。

答案 1 :(得分:6)

如果您需要按名称查找数据库对象(例如表格,列,触发器) - 请查看名为SQL Search免费红门工具,它会执行此操作 - 它会搜索您的整个数据库中的任何类型的字符串。

enter image description here

enter image description here

对于任何DBA或数据库开发人员来说,这是一个非常必备的工具 - 我是否已经提到它绝对免费用于任何用途?

答案 2 :(得分:1)

要在数据库中查找代码,您可以搜索sys.sql_modules(请参阅示例)或使用免费的Red Gate SQL Search之类的内容。

您也可以使用SQL:

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

注意:syscomments是遗留的,并将定义拆分为nvarchar 4000块,因此冒着而不是找到你想要的东西的风险。这同样适用于INFORMATION_SCHEMA.ROUTINES

编辑:我误解了

要查找参数,请查询sys.parameters

答案 3 :(得分:0)

我会使用Mangement Studio为您的所有存储过程生成脚本,然后使用文本编辑器进行简单的查找或查找&验证&替换以进行更改,然后再次运行脚本(整个脚本)。

答案 4 :(得分:0)

要同时查看参数和SP名称:

SELECT
   o.name as NAME, p.name as parameter
FROM
   sys.parameters p (NOLOCK)
   INNER JOIN sys.objects o (NOLOCK) ON p.object_id = o.object_id 
WHERE
   p.name like '%afe%'