在sql server存储过程中查找对(misspelt)对象的引用

时间:2011-11-18 13:52:19

标签: sql-server-2005

我知道在sql数据库存储过程中,有一个拼写错误(因此不存在)sq对象。搜索数据库中每个存储过程的主体的最佳方法是什么?

这相当于在visual studio中查找所有引用非常有用。

服务器是sql server 2005。

非常感谢

3 个答案:

答案 0 :(得分:0)

您可以为数据库中的所有存储过程生成单个脚本,然后搜索该脚本。

右键单击数据库,然后转到“Generate Scripts”....从那里开始应该是相当明显的......

答案 1 :(得分:0)

SELECT name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%YourTableName%'

还有其他方法,例如检查information_schema.routines,加入sys.sql_modules。

答案 2 :(得分:0)

使用它:

SELECT
    OBJECT_SCHEMA_NAME(m.object_id) + '.' + OBJECT_NAME(m.object_id), o.type_desc
    FROM sys.sql_modules        m
        INNER JOIN sys.objects  o ON m.object_id=o.object_id
    WHERE m.definition like '%whatever%'

它会在存储过程,函数和视图中搜索“无论”字符串。

这是最简单的版本(从结果中删除对象类型):

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