2008-09-17 7 views
2

Das ist ziemlich komisch.Ich verfolgte eine gespeicherte Prozedur wie im SQL Server 2005 Profiler gezeigt. Es ist nicht gefunden, aber funktioniert. Warum?

Ich habe meinen Profiler geöffnet und es zeigt offensichtlich, dass eine gespeicherte Prozedur aufgerufen wird. Ich öffne die Datenbank und die SP-Liste, aber der SP existiert nicht. Es gibt jedoch einen anderen SP, dessen Name derselbe ist, mit dem Präfix "x"

Ordnet SQL Server 2005 den SP-Namen aus Sicherheitsgründen einem anderen Namen zu?

EDIT: Ich fand heraus, es ist ein Synonym, was auch immer das ist.

+0

Sie diese Frage schließen sollte, da Sie Ihre eigene Frage – SQLMenace

+0

Vereinbarte beantwortet - wenn diese beantwortet wird, bitte eine Antwort hinterlassen, einen Tag warten, und akzeptieren Sie es dann. – SqlRyan

Antwort

5

Wenn Sie wissen, dass ein Objekt existiert, weil es in einer Abfrage verwendet wurde, und Sie es nicht in der Objektstruktur von Management Studio finden können, können Sie dies tun, um es zu finden.

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

Ich habe gerade überprüft, und es funktioniert mit Synonyme.

1

Möglicherweise dumme Fragen, aber nur für den Fall ... haben Sie die SP-Liste aktualisiert? Haben Sie eine gespeicherte Prozedur dieses Namens unter einem anderen Besitzer überprüft? Wenn Sie die gespeicherte Prozedur ohne Angabe des Besitzers erstellt haben, könnte sie sich in der Liste befinden, in der Sie sich befinden (oder gar nicht, wenn die Liste beispielsweise nur nach "dbo" gefiltert wird).

+0

"Anderer Besitzer" hat mich mehr als einmal gebissen - in diesem Fall finden Sie es am oberen Ende der Liste – SqlRyan

1

Sie keine Berechtigung

1

Hinzufügen haben zu den bisherigen Antworten alle Objekte in der Datenbank, um zu sehen, ist es auch unter „System Stored Procedures“, und wenn der Name der gespeicherten Prozedur beginnt mit „sp_ sein könnte ", könnte es auch in der master-Datenbank sein.

1

Die gespeicherte Prozedur befindet sich in der Datenbank, die Sie zum Zeitpunkt der Erstellung der gespeicherten Prozedur ausgewählt haben. Suchen Sie also in der Datenbank, aus der die Daten extrahiert werden, andernfalls in der Master-Datenbank. Wenn Sie immer noch nicht in der Lage sind zu finden, dann ist die erste Nummer Lösung am besten. das heißt

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