Estou ajustando o desempenho de um aplicativo Dynamics AX e vejo em um rastreamento SQL uma consulta de E/S alta e de execução longa do formulário exec sp_cursorexecute 1073742882 ...
Quando tento executar essa consulta em uma nova janela do SQL Management Studio, recebo um erro Could not find prepared statement with handle 1073742882.
I' Não tenho certeza, mas parece que um plano em cache é específico da conexão. Não tenho nenhum sp_cursorprepare
em meu rastro; repetir o caso de uso revela o mesmo identificador preparado com um novo cursor. Como estou me conectando a um ambiente compartilhado, acho que teria que redefinir o servidor de aplicativos e rastrear sua inicialização para vê-lo.
- Existe alguma maneira de usar o identificador preparado do cursor para ver a consulta subjacente?
- Existe alguma maneira de correlacionar uma linha
dm_exec_cached_plans
a este cursor? - Existe alguma maneira de ver o plano de execução via
dm_exec_query_plan
ou de outra forma?
Eu não tive que rastrear a atividade do cursor desde SQL2000, ou seja, dias pré-DMV. Presumo que a maneira antiga ainda seja viável, use o profiler e inclua planos de execução no rastreamento.
Não me lembro se o plano será incluído na chamada sp_cursorexecute ou se você precisa voltar pelo rastreamento e encontrar o evento sp_cursorprepexec ou sp_cursorprepare associado ao identificador.