Узнайте вызывающую хранимую процедуру в SQL Server

Нет хорошего автоматического stored-procedures способа сделать это (увы). Так sql2005 что это действительно зависит sql от того, насколько вы готовы db (пере)писать свои процессы, чтобы database иметь возможность сделать sproc это.

Если у вас есть механизм sql-server-2005 регистрации, вы можете прочитать stored-procedures журнал и выяснить, кто вам stored-procedure звонил.

Например, если вы databases реализуете ведение журнала sql-select путем вставки в таблицу, например:

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 ) 

Это sql2005 не сработает для рекурсивных mssql2005 вызовов, но, возможно, кто-нибудь stored-procedures сможет это исправить?

sql

sql-server

database

stored-procedures

sql-server-2005

2022-06-26T22:47:06+00:00
Вопросы с похожей тематикой, как у вопроса:

Узнайте вызывающую хранимую процедуру в SQL Server