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ể.