ฉันใช้กิจกรรมเพิ่มเติมเพื่อติดตามข้อความที่ใช้โดยแอปพลิเคชันของเรา ผมได้สร้างเซสชั่นที่จะเก็บรวบรวมข้อมูลที่ฉันต้องการยกเว้นว่าผมยังต้องการที่จะรู้ว่าเป็นค่าที่แท้จริงของพารามิเตอร์ที่ใช้
ฉันกำลังดำเนินการติดตามนี้ในสภาพแวดล้อมที่ไม่ใช่การผลิตและประสิทธิภาพการทำงานใด ๆ ที่เกิดจากการติดตามเป็นที่ยอมรับได้
ข้อความค้นหาทั้งหมดมาจาก Hibernate และได้รับการกำหนดพารามิเตอร์ในรูปแบบของ:
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 ที่สมบูรณ์ (รวมถึงค่าพารามิเตอร์ทั้งหมด) ที่เรียกจากไฮเบอร์เนต สำหรับกรณีอื่น ๆ ก็ยังคงเป็นเรื่องดีที่จะทราบวิธีการจับค่าพารามิเตอร์ถ้าเป็นไปได้