Saya menggunakan acara yang diperluas untuk melacak pernyataan yang digunakan oleh aplikasi kita. Saya telah membuat sesi yang akan mengumpulkan informasi yang saya inginkan, kecuali bahwa saya juga ingin mengetahui nilai aktual dari parameter yang digunakan .
Saya melakukan penelusuran ini di lingkungan non-produksi dan kinerja apa pun yang terkena jejak dapat diterima.
Semua pertanyaan berasal dari Hibernate dan telah diparameterisasi dalam bentuk:
SELECT a, b, c From Customer where CustomerId = @P0
Ini adalah pengaturan sesi saya.
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)
Bagaimana saya bisa menangkap nilai aktual dari parameter yang digunakan dalam pernyataan yang ditangkap? Apa itu mungkin?
- Edit (Penanganan Masalah): Mengubah acara menjadi rpc_completed memberi saya perintah sql lengkap (termasuk semua nilai parameter) yang dipanggil dari Hibernate. Untuk kasus lain, masih bagus untuk mengetahui cara menangkap nilai parameter, jika memungkinkan.