Es gibt keine schöne automatische Art und Weise, dies zu tun (leider). Es kommt also wirklich darauf an, wie sehr Sie bereit sind, Ihre Procs neu zu schreiben, um dies zu können.
Wenn Sie über einen Protokollierungsmechanismus verfügen, können Sie möglicherweise das Protokoll lesen und herausfinden, wer Sie angerufen hat.
Zum Beispiel, wenn Sie die Protokollierung implementieren, indem auf eine Tabelle einfügen, zum Beispiel:
CREATE TABLE Log
(timestamp dattime,
spid int,
procname varchar(255),
message varchar(255))
... text of proc ...
INSERT INTO Log
SELECT get_date(), @@spid, @currentproc, 'doing something'
-- you have to define @currentproc in each proc
-- get name of caller
SELECT @caller = procname
FROM Log
WHERE spid = @@spid
AND timestamp = (SELECT max(timestamp)
FROM Log
WHERE timestamp < get_date()
AND procname != @currentproc)
Dies würde nicht für rekursive Aufrufe arbeiten, aber vielleicht kann jemand das Problem beheben?
Sie können den Namen des aktuellen SP kennen, indem Sie 'OBJECT_NAME (@@ PROCID)' erhalten – Gman