SQL Server - 查找列是否在数据库中的任何存储过程中遗漏了别名

时间:2016-08-10 10:23:03

标签: sql-server-2008

在我的SQL Server数据库中,我有一个现有的表说tblA。 现在我需要向该表添加一个名为' IsActive'的新列。还有许多其他表格(比如tblB),列名称为#Is; IsActive'已存在于数据库中。

现在添加了列后,我遇到了一个现有的存储过程,其中包含以下代码

tblA INNER JOIN tblB b ON a.id = b.id WHERE IsActive = 1

由于在Where条件中没有为列指定别名,因此该SP将抛出“不明确的列名称”和“IsActive”#39; '错误。

数据库中有数千个使用tblA的SP。

那么有没有简单的方法/单个脚本来检查名为' IsActive'的列。存在于没有别名的任何SP中?

1 个答案:

答案 0 :(得分:0)

也许这不是你的解决方案。

但是尝试使用此查询可能会有所帮助

SELECT r.ROUTINE_NAME 
    ,OBJECT_DEFINITION (OBJECT_ID(r.ROUTINE_NAME))
FROM INFORMATION_SCHEMA.ROUTINES r
WHERE OBJECT_DEFINITION (OBJECT_ID(r.ROUTINE_NAME)) LIKE '%WHERE IsActive = 1%'