J'essaye de lister toutes les procédures stockées de toutes les bases de données sur mon serveur, et je ne peux pas sembler filtrer des objets de système de manière fiable. J'utilisais:Comment identifier les objets système lors de l'affichage de la liste des objets de base de données SQL Server?
SELECT *
FROM sysobjects
WHERE id > 100
Ce qui semble fonctionner correctement dans chaque base de données, sauf MSDB, qui est plein d'une tonne de procs stockées avec des ID aspect normal, mais ils sont stockés système procs. Pour autant que je sache, il n'y a aucun moyen pour moi de filtrer les processus stockés du système en utilisant l'une des valeurs de la table sysobjects - quelqu'un d'autre sait-il une valeur qui peut être utilisée pour filtrer?
Ils sont tous marqués comme type = "P", ce qui signifie qu'il s'agit d'un proc stocké, mais il ne semble pas y avoir d'indicateur pour spécifier s'il s'agit d'un proc système stocké ou d'un utilisateur. Je peux utiliser la vue sys.objects et filtrer pour "IsMsShipped = 0", mais je voudrais quelque chose qui fonctionne aussi sur SQL 2000, donc je préfère utiliser les anciennes vues (comme sysobjects) si c'est possible.
C'est peut-être ce que je dois faire, car j'ai remarqué cette propriété dans la nouvelle vue du système, mais je tiens à espérer qu'il existe une propriété facilement accessible qui fonctionne aussi en 2000. – SqlRyan
er ... OBJECTPROPERTY est aussi dans SQL Server 2000 http://msdn.microsoft.com/en-us/library/aa276849(SQL.80).aspx – gbn
Hmm - c'est sûr, et je viens de confirmer que mon script fonctionne toujours sur un serveur 2000. Merci de votre aide! – SqlRyan