확장 이벤트를 사용하여 응용 프로그램에서 사용하는 명령문을 추적하고 있습니다. 사용 된 매개 변수 의 실제 값 을 알고 싶은 경우를 제외하고 원하는 정보를 수집하는 세션을 작성했습니다 .
프로덕션 환경이 아닌 환경에서이 추적을 수행하고 있으며 추적으로 인한 성능 저하가 허용됩니다.
모든 쿼리는 최대 절전 모드에서 시작되며 다음과 같은 형식으로 매개 변수화되었습니다.
SELECT a, b, c From Customer where CustomerId = @P0
이것은 내 세션 설정입니다.
CREATE EVENT SESSION [TracingForStatements] ON SERVER
ADD EVENT sqlserver.sp_statement_completed (
ACTION (
sqlserver.session_id,
package0.collect_system_time,
sqlserver.transaction_id,
package0.event_sequence
)
WHERE (
sqlserver.database_id=555
)
)
ADD TARGET package0.ring_buffer(SET max_memory= 128000)
WITH (EVENT_RETENTION_MODE = NO_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 1 SECONDS)
캡처 된 명령문에 사용 된 매개 변수의 실제 값을 어떻게 캡처 할 수 있습니까? 가능합니까?
- 편집 (해결 방법) : 이벤트를 rpc_completed로 변경하면 최대 절전 모드에서 호출 된 전체 sql 명령 (모든 매개 변수 값 포함)이 표시됩니다. 다른 경우에는 가능하면 매개 변수 값을 캡처하는 방법을 아는 것이 좋습니다.
sqlserver.rpc_completed가 매개 변수 값을 포함하여 완전한 T-SQL을 제공 하는지 확인하십시오 .
—
Ivan Stankovic
@IvanStankovic, 그렇습니다. 그렇습니다. "편집"의 질문에서 언급했듯이.
—
Peter Henell