web-dev-qa-db-ja.com

再コンパイルでストアドプロシージャを見つける方法

私のデータベースにはいくつかあります 再コンパイルされたストアドプロシージャ

私がそれらを見つける方法は:

SELECT OBJECT_NAME(ID)AS SP_NAME,* 
FROM SYSCOMMENTS
WHERE TEXT LIKE '%WITH RECOMPILE%'

私が見たとき:

select * from sys.procedures

recompiles の表示が見つかりません。

再コンパイルあり ストアドプロシージャを見つけるためのより良いまたはよりエレガントな方法はありますか?

3

データベースごとに、これを行うことができます:

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;
7
Erik Darling