No SQL Server Extended Events, existe alguma maneira de vincular um evento "inicial", como rpc_starting
, com um evento "concluído", como rpc_completed
? Por exemplo, existe algo como um ID de correlação que identificaria exclusivamente uma chamada para o SQL Server?
Gostaria de consultar os eventos registrados para obter o horário de início de uma chamada, de rpc_starting
, e sua duração, de rpc_completed
. Até agora não encontrei nenhuma maneira de vincular exclusivamente o início e o fim da mesma chamada.
Achei que a request_id
ação poderia funcionar, mas parece resultar em 0 para os eventos que observei.
O rastreamento de causalidade pode fazer isso por você. Abaixo está um exemplo:
Após a criação do evento, executo um TSQL simples apenas como exemplo:
Então, na GUI da sua visualização de evento estendida, você pode adicionar "Attach_Activity_Id.GUID", com isso você pode vincular suas instruções entre si. Se parece com isso:
Você pode obter o horário de início subtraindo a duração do carimbo de data/hora para não precisar coletar os
rpc_starting
eventos. Fora isso, veja a sugestão de Yannick de usar TRACK_CAUSALITY=ON.