Я використовую розширені події, щоб простежити твердження, використовувані нашою програмою. Я створив сеанс, який збиратиме потрібну інформацію, за винятком того, що я також хотів би знати фактичні значення параметрів, які використовувались .
Я виконую цей слід у невиробничому середовищі, і будь-яка ефективність, потрапила в слід, є прийнятною.
Усі запити походять із сплячого режиму та параметризовані у вигляді:
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 (включаючи всі значення параметрів), викликану з режиму hibernate. В інших випадках все-таки було б добре знати, як зафіксувати значення параметрів, якщо це можливо.