Minha empresa está pensando em mudar para o uso completo do SQL preparado em todos os aplicativos para alguns aplicativos. Por alguns dias, tenho tentado responder à pergunta "Temos uma maneira de monitorar o desempenho", como ver uma transação SQL com ações de alta duração/CPU/IO e ver o que estava fazendo para produzir esse alto carregar. Muito do que encontrei foram preocupações de que isso é desnecessário/obsoleto no Microsoft SQL Server. Eu levantei preocupações sobre isso, mas enquanto isso ainda estou tentando encontrar uma maneira de rastrear a atividade.
O melhor que identifiquei é que podemos ter nosso monitoramento de desempenho padrão que sempre tivemos, mas também precisaremos de uma espécie de "anel decodificador mágico" de rastreamento/sessão XE. Isso teria que rastrear as ações Preparar/Despreparar SQL para obter o identificador e as mensagens de conclusão da instrução associada para obter qual é a consulta associada para cada SPID. Então, se encontrarmos em nosso monitoramento de desempenho uma transação dizendo algo como "sp_execute 32 etc etc...", olharíamos para o SPID solicitando essa ação, pegaríamos esse handle # 32 (ou o que for) e olharíamos para o nosso anel decodificador mágico para descobrir qual é a instrução SQL parametrizada que está sendo executada para análise.
A resposta que estaríamos usando atualmente precisa dar suporte ao SQL2008R2 e superior (temos muitas centenas desta versão implantada no momento, pois estamos começando a migrar para a próxima geração), e é por isso que menciono o rastreamento do SQL, pois ainda utilizamos isso no XE para muitas implantações devido às limitações do XE antes do SQL2012.
Ainda estaremos analisando se o SQL preparado é ou não uma boa ideia para nós, pois algumas novas informações que surgem na pesquisa sugerem que pode não ser. Estou simplesmente perguntando se existe uma maneira limpa de monitorar diretamente as ações feitas por meio do SQL preparado sem um método tão complicado de "anel decodificador mágico" para acompanhar o que é o SQL preparado.