2010-05-17 3 views
2

저장 프로 시저에 대한 일반 로깅 솔루션을 만들어 입력 매개 변수의 값을 기록 할 수있게하려고합니다. 현재 저는이 일을 어느 정도 손으로하고 있으며이 접근법에 대해 매우 불만합니다. 이상적으로 다음과 같이 말하고 싶습니다.저장 프로 시저 (SQL Server 2005)에서 입력 매개 변수를 캡처하는 방법은 무엇입니까?

"내 spid를 입력하면 입력 매개 변수와 그 값은 무엇입니까?"

이것은 SQL 프로파일 러를 실행할 때 나와 동일한 정보입니다. 저장 프로 시저의 이름, 모든 입력 매개 변수 및 모든 입력 값이 나열되어 있습니다. 저장 프로 시저 내에서이 값들을 어떻게 처리 할 수 ​​있습니까?

감사합니다. Duncan

답변

0

저장 프로 시저 내에서 수행하기가 어려울 것입니다. SQL 프로파일 러는 다른 SPID에서 실행하고, 다른 사용자의 문을 캡처하기 위해이 같은 문 실행 : 현재 SPID에 대한 저장된 프로 시저에서이 작업을 실행하면

이 돌아올 것 모두가이다
DECLARE @handle VARBINARY(64) 
SELECT @handle = sql_handle from sys.sysprocesses where spid = @SPID 
SELECT text FROM sys.dm_exec_sql_text(@handle) 

문제가됩니다 위의 진술. 나는 SQL 서버가 다른 SPID 하에서 배치를 실행하기 위해 T-SQL 구조를 제공한다고 생각하지 않는다. 나는 당신이 다른 연결에서 배치를 실행하는 .Net dll 저장 프로 시저를 작성할 수 있다고 가정합니다. 그런 종류의 일을하지만 그것이 가치가있는 것보다 더 어려울 수 있습니다.

+0

네, 제 접근 방식이었습니다. 가능하다면 CLR에 의지하지 않고이 작업을하고 싶습니다. – Duncan