我有一个列name varchar(8)
....我想将大小更改为20 ...并且几乎有大约100个存储过程。
我需要在名称作为参数传递的所有存储过程中更改@name
的大小。
答案 0 :(得分:9)
您可以右键单击该表并选择View Dependancies - 这将为您提供需要考虑更新的所有相关对象的列表。
如果您想搜索所有列,您可以尝试除SQL搜索之外的另一个工具ApexSQL Search,这也是免费的。
答案 1 :(得分:6)
如果您需要按名称查找数据库对象(例如表格,列,触发器) - 请查看名为SQL Search的免费红门工具,它会执行此操作 - 它会搜索您的整个数据库中的任何类型的字符串。
对于任何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%'