Thu thập các giá trị tham số từ phiên sự kiện mở rộng


9

Tôi đang sử dụng các sự kiện mở rộng để theo dõi các tuyên bố được sử dụng bởi ứng dụng của chúng tôi. Tôi đã tạo một phiên sẽ thu thập thông tin mà tôi muốn, ngoại trừ việc tôi cũng muốn biết các giá trị thực tế của các tham số đã được sử dụng .

Tôi đang thực hiện theo dõi này trên môi trường phi sản xuất và bất kỳ hiệu suất nào đạt được theo dõi đều được chấp nhận.

Tất cả các truy vấn bắt nguồn từ Hibernate và đã được tham số hóa dưới dạng:

SELECT a, b, c From Customer where CustomerId = @P0

Đây là thiết lập phiên của tôi.

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)

Làm cách nào tôi có thể nắm bắt các giá trị thực tế của các tham số đã được sử dụng trong các câu lệnh đã chụp? Có thể không?

- Chỉnh sửa (Workaround): Thay đổi sự kiện thành rpc_completed cung cấp cho tôi lệnh sql hoàn chỉnh (bao gồm tất cả các giá trị tham số) được gọi từ Hibernate. Đối với các trường hợp khác, vẫn nên biết cách nắm bắt các giá trị tham số, nếu có thể.


Kiểm tra xem sqlserver.rpc_completed có cung cấp T-SQL hoàn chỉnh bao gồm các giá trị tham số không.
Ivan Stankovic

@IvanStankovic, phải đó là cách tôi phải làm. Như đã đề cập trong câu hỏi trong phần "Chỉnh sửa".
Peter Henell

Câu trả lời:


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.