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)
我发现没有重新编译的迹象。
有没有更好或更优雅的方法来找到重新编译存储过程?
每个数据库,你可以这样做:
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)