2008-09-17 6 views
2

C'est assez bizarre.J'ai suivi une procédure stockée comme indiqué dans le profileur SQL Server 2005. Il n'est pas trouvé mais fonctionne. Pourquoi?

J'ai mon profileur ouvert et cela montre clairement qu'une procédure stockée est appelée. J'ouvre la base de données et la liste de SP, mais le SP n'existe pas. Cependant, il existe un autre SP dont le nom est le même, sauf le préfixe 'x'

SQL Server 2005 mappe-t-il le nom du SP sur un autre pour des raisons de sécurité?

EDIT: J'ai découvert que c'est un synonyme, quel qu'il soit.

+0

Vous devez fermer cette question puisque vous avez répondu accord à votre propre question – SQLMenace

+0

- si cela répond, s'il vous plaît poster une réponse, attendez un jour, puis l'accepter. – SqlRyan

Répondre

5

En général, lorsque vous savez qu'un objet existe parce qu'il a été utilisé dans une requête et que vous ne le trouvez pas dans l'arborescence de l'objet dans Management Studio, vous pouvez le faire pour le trouver.

select * 
from sys.objects 
where name = 'THE_NAME_YOU_WANT' 

Je viens de vérifier, et cela fonctionne avec les synonymes.

1

Questions peut-être idiotes, mais juste au cas où ... avez-vous rafraîchi la liste des PS? Avez-vous vérifié une procédure stockée de ce nom sous un propriétaire différent? Si vous avez créé la procédure stockée sans spécifier le propriétaire, elle peut être dans la liste sous votre propriété (ou pas du tout si la liste est filtrée uniquement pour "dbo" par exemple).

+0

"Différent propriétaire" m'a mordu plus d'une fois - dans ce cas, vous le trouverez en haut de la liste – SqlRyan

1

Vous ne pouvez pas avoir la permission de voir tous les objets de la base de données

1

Ajout aux réponses précédentes, il pourrait également être sous « Procédures stockées système », et si le nom de la procédure stockée commence par « sp_ ", il pourrait aussi être dans la base de données master.

1

La procédure stockée se trouve dans la base de données que vous avez sélectionnée au moment de la création de la procédure stockée. Cherchez donc dans la base de données à partir de laquelle il extrait des données, sinon il sera dans la base de données master. Si vous n'êtes toujours pas en mesure de trouver la première solution de numéro est le meilleur. à savoir

select * from sys.objects where name = 'name of stored procedure' 
Questions connexes