การรวบรวมค่าพารามิเตอร์จากเซสชันเหตุการณ์เพิ่มเติม


9

ฉันใช้กิจกรรมเพิ่มเติมเพื่อติดตามข้อความที่ใช้โดยแอปพลิเคชันของเรา ผมได้สร้างเซสชั่นที่จะเก็บรวบรวมข้อมูลที่ฉันต้องการยกเว้นว่าผมยังต้องการที่จะรู้ว่าเป็นค่าที่แท้จริงของพารามิเตอร์ที่ใช้

ฉันกำลังดำเนินการติดตามนี้ในสภาพแวดล้อมที่ไม่ใช่การผลิตและประสิทธิภาพการทำงานใด ๆ ที่เกิดจากการติดตามเป็นที่ยอมรับได้

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


ตรวจสอบว่าsqlserver.rpc_completedมี T-SQL ที่สมบูรณ์รวมถึงค่าพารามิเตอร์
Ivan Stankovic

@IvanStankovic ใช่แล้วนั่นเป็นวิธีที่ฉันต้องทำ ดังกล่าวในคำถามใน "แก้ไข"
Peter Henell

คำตอบ:


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.