Comment puis-je liste tous les non-procédures stockées système?
Je veux créer une requête à la liste de tous définis par l'utilisateur des procédures stockées, à l'exclusion de ceux qui sont des procédures stockées du système, en considérant que:
- Vérifiant le nom comme "sp_" ne fonctionne pas parce qu'il y a de l'utilisateur des procédures stockées qui commencent par "sp_".
- La vérification de la propriété is_ms_shipped ne fonctionne pas parce qu'il y a des procédures stockées du système qui ont le drapeau = 0, par exemple: sp_alterdiagram (il n'est pas MSShipped mais apparaît sous Système de Procédures Stockées dans SQL Server Management Studio).
Il doit y avoir une propriété, ou un drapeau quelque part, puisque vous pouvez voir le "Système de Procédures Stockées" dans un dossier distinct dans SQL 2005. Personne ne sait?
Edit: Une combinaison des suggestions ci-dessous a fonctionné pour moi:
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
Vous devez vous connecter pour publier un commentaire.
Vous devriez utiliser quelque chose comme ceci:
Comme vous avez pu le deviner, la clé est dans is_ms_shipped attribut (il existe dans sys.les objets de la vue ainsi).
Mis à JOUR. D'abord manqué votre point sur is_ms_shipped.
C'est le code (condition) que la Gestion de Studio utilise pour récupérer une liste de procédures stockées système'
Ici ps fait référence à sys.all_objects vue du système.
à l'aide de la première réponse ci-dessus, j'ai écrit ce qui fonctionne bien pour mes utilisations:
Je vais juste jeter dans ma version "améliorée" de SQL (sachant que le formatage est une question de préférence personnelle):
Voici ce que j'ai fait de base sur les solutions ci-dessus:
Cette simple requête fonctionne sur SQL Server 2008 mais je n'ai pas testé les autres versions.
Mise à JOUR - 2018-11-28
Travaille également sur SQL Server 2014
Il y a trois sortes de "système" procédures:
essayer cette
Si pour quelque raison vous avez eu de la non-système de procédures stockées dans la base de données, vous pouvez utiliser la requête (ce qui permettra de filtrer la PLUPART des procédures stockées du système:
vous voir plus d'informations dans la réponse suivante
Requête qui retourne la liste de toutes les Procédures Stockées