Chcę utworzyć kwerendę do listy wszystkich procedur określonych przez użytkownika przechowywane, z wyjątkiem tych, które są przechowywane procedury systemowe, biorąc pod uwagę, że:Jak wyświetlić wszystkie niesystemowe procedury przechowywane?
- Sprawdzanie nazwy takie jak „sp_” nie działa, ponieważ istnieje użytkownik procedury przechowywane zaczynające się od "sp_".
- Sprawdzanie właściwości is_ms_shipped nie działa, ponieważ istnieją procedury przechowywane w systemie, które mają flagę = 0, na przykład: sp_alterdiagram (nie jest to MSShipped, ale pojawia się w System Stored Procedures w SQL Server Management Studio).
Musi istnieć właściwość lub flaga gdzieś, ponieważ można zobaczyć "Procedury składowane w systemie" w oddzielnym folderze w SQL 2005. Czy ktoś wie?
Edit: Połączenie z sugestiami poniżej pracował dla mnie:
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
wspomina o is_ms_shipped w swoim pytaniu i mówi, że nie jest niezawodny. –
Tęskniłem za tym początkowo, ale zaktualizowałem moją sugestię nieco później. – AlexS