如何在INFORMATION_SCHEMA,sys.objects或某些其他元数据中找到用RECOMPILE声明的SP?

(我在系统运行状况监视中添加了一些代码,并希望警告那些在没有正当理由的情况下声明的代码。)

注意:我不是要搜索“ WITH RECOMPILE”的常规文本-我已经可以这样做,但是它将为文本的任何注释或文字版本带来误判。

最佳答案

为了快速而又肮脏地使用:

SELECT
     o.name
FROM
     syscomments c
INNER JOIN sys.objects o ON
     o.object_id = c.id
WHERE
     c.text LIKE '%WITH RECOMPILE%'


不过,在实际应用中使用该方法可能不是一个好主意。如果我有几分钟的时间,我将尝试找出一种更清洁的方法。上面的代码还将捕获已注释掉该字符串的proc,使用MS SQL Server特定表的syscomments等。

07-27 22:00