Как получить входные параметры из хранимой процедуры (SQL Server 2005)?

Я хотел бы создать общее решение для ведения журнала для моих хранимых процедур, позволяющее мне регистрировать значения входных параметров. В настоящее время я делаю это более или менее вручную, и я очень недоволен таким подходом. В идеале я хотел бы сказать что-то вроде следующего:

"учитывая мой spid, каковы мои входные параметры и их значения?"

Это та же самая информация, которую я получаю, когда запускаю SQL Profiler — имя хранимой процедуры, все входные параметры и все входные ЗНАЧЕНИЯ отображаются для меня. Как я могу получить эти значения из хранимой процедуры?

Спасибо; Дункан


person Duncan    schedule 17.05.2010    source источник


Ответы (1)


Это будет сложно сделать в рамках хранимой процедуры. Профилировщик SQL работает под другим SPID и запускает оператор, подобный этому, для захвата других операторов пользователей:

DECLARE @handle VARBINARY(64)
SELECT @handle = sql_handle from sys.sysprocesses where spid = @SPID
SELECT text FROM sys.dm_exec_sql_text(@handle)

Проблема в том, что если вы запустите это в хранимой процедуре для текущего SPID, все, что вы получите, - это утверждение выше. Я не верю, что SQL-сервер предоставляет конструкцию T-SQL для выполнения пакета с другим SPID. Я полагаю, вы могли бы написать хранимую процедуру .Net dll, которая выполняет пакет по другому соединению. делать такие вещи, но это может быть больше проблем, чем стоит.

person James    schedule 17.05.2010
comment
Да, это был мой первый подход. Я хотел бы сделать это, не прибегая к CLR, если это возможно. - person Duncan; 19.05.2010