Я хочу создать запрос для списка всех пользовательских хранимых процедур, за исключением тех, которые являются системно хранимыми процедурами, учитывая, что:
- Проверка имени типа "sp_" не работает, потому что есть хранимые пользователем процедуры, начинающиеся с "sp_".
- Проверка свойства is_ms_shipped не работает, потому что существуют системные хранимые процедуры, у которых есть этот флаг = 0, например: sp_alterdiagram (это не MSShipped, но отображается в System Stored Procedures в SQL Server Management Studio).
Должно быть свойство или флаг где-то, так как вы можете увидеть "хранимые процедуры системы" в отдельной папке в SQL 2005. Кто-нибудь знает?
Изменить: комбинация предложений ниже работала для меня:
select *
from
sys.objects O LEFT OUTER JOIN
sys.extended_properties E ON O.object_id = E.major_id
WHERE
O.name IS NOT NULL
AND ISNULL(O.is_ms_shipped, 0) = 0
AND ISNULL(E.name, '') <> 'microsoft_database_tools_support'
AND O.type_desc = 'SQL_STORED_PROCEDURE'
ORDER BY O.name