如何使用重新编译查找存储过程?

Mar*_*lli 3 sql-server stored-procedures metadata dmv sql-server-2016

在我的数据库中,我有一些重新编译的存储过程

我找到它们的方式是:

SELECT OBJECT_NAME(ID)AS SP_NAME,* 
FROM SYSCOMMENTS
WHERE TEXT LIKE '%WITH RECOMPILE%'
Run Code Online (Sandbox Code Playgroud)

当我看:

select * from sys.procedures
Run Code Online (Sandbox Code Playgroud)

我发现没有重新编译的迹象。

有没有更好或更优雅的方法来找到重新编译存储过程?

Eri*_*ing 7

每个数据库,你可以这样做:

SELECT          DISTINCT
                DB_NAME() AS DBName, 
                SO.name AS SPName, 
                SM.is_recompiled, 
                ISR.SPECIFIC_SCHEMA
FROM            sys.sql_modules AS SM
LEFT OUTER JOIN master.sys.databases AS sDB
    ON SM.object_id = DB_ID()
LEFT OUTER JOIN sys.sysobjects AS SO
    ON  SM.object_id = SO.id
    AND SO.type = 'P'
LEFT OUTER JOIN INFORMATION_SCHEMA.ROUTINES AS ISR
    ON  ISR.ROUTINE_NAME = SO.name
    AND ISR.SPECIFIC_CATALOG = DB_NAME()
WHERE           SM.is_recompiled = 1;
Run Code Online (Sandbox Code Playgroud)