Monitorar transações SQL no ColdFusion Administrator?

2

Usando o CF9, IIS e MSSQL, existe uma maneira de monitorar os comandos SQL enviados por um script? Algo que mostra a consulta bruta, preferencialmente.

Eu tenho essa idéia depois de ver que WEBrick e Ruby on Rails realmente despejam as consultas sendo geradas para o console e queria saber se o CF9 tinha algo parecido.

    
por Nic 18.08.2011 / 20:37

2 respostas

1

Você pode usar o SQL Server Profiler para fazer isso. Você terá que configurar o rastreamento para capturar exatamente o que você quer, mas definitivamente lhe dará a consulta bruta.

Dê uma olhada no este artigo do MSDN para obter informações sobre Profiler.

    
por 18.08.2011 / 21:02
4

Existem várias soluções. Conforme observado por @squillman, você pode visualizá-lo no SQL Server através do Profiler. Mas apenas dentro da FC, você tem outras escolhas.

  • Você pode ativar a saída de depuração do CF para exibir informações de consulta no final da solicitação. Isso tem prós e contras, claro. Se estiver em desenvolvimento, geralmente é bom. No prod, é melhor evitá-lo (mesmo se você limitar os endereços IP que podem exibir a saída de depuração, como muitos afirmam que até mesmo os usuários ainda pagam o custo da depuração sendo gerada).
  • Você também pode registrar as informações por conta própria, dentro do código. Desde o CF7, há um novo atributo RESULT, que contém uma estrutura com dados sobre a consulta, incluindo a instrução SQL. Você poderia escrever isso com CFLOG, CFTRACE e outras tags (ou funções de script relacionadas).
  • Você também pode ter o próprio log do CF. Um recurso pouco conhecido foi adicionado no CF8, uma nova caixa de seleção dentro das "configurações avançadas" para uma definição de fonte de dados (no CF Admin) permite "registrar a atividade". Tenha cuidado, é bastante detalhado.
  • Você também pode usar recursos internos de monitoramento nos vários monitores do servidor CF, seja o gratuito incorporado no CF Enterprise (ou Developer, mas não o padrão) ou os de terceiros, FusionReactor e SeeFusion. O CFSM foca apenas em consultas lentas, no entanto. FR e SF podem mostrar todas as consultas dentro de uma determinada solicitação (ou todas as consultas no servidor, incluindo aquelas não associadas a qualquer consulta, como a remoção de variáveis do cliente, etc.). registra todas as consultas (se você habilitar o log de consulta), enquanto SF novamente registra apenas consultas lentas. (Cada um pode ser alterado para a outra alternativa).
  • Por fim, todas essas ferramentas fazem seu log de consulta por meio da disposição dos drivers JDBC. Você também pode fazer isso manualmente, sem essas ferramentas, usando qualquer uma das muitas alternativas de wrapper do jdbc. Apenas o google jdbc wrapper e você encontrará muitos.

Eu também falo sobre todas essas opções em mais detalhes em uma entrada de blog que eu fiz, que se concentrou em espionar consultas ORM dentro do CF, tudo se aplica tão bem a quaisquer consultas que o CF gera (e em qualquer mecanismo CFML ): Espionando interações no banco de dados ORM: Hibernate, Transfer, etc. em qualquer mecanismo CFML .

Finalmente, observarei que, para usar o SQL Server Profiler, observe que ele também tem seus pontos positivos e negativos (pode gerar muito mais detalhes sobre a consulta disponível como opções, incluindo até mesmo o gráfico do plano de execução por consulta, que é ótimo, mas também como qualquer monitoramento tem algum risco de sobrecarga, dependendo de como as coisas estão configuradas. Muitos recursos existem que tratam dessa preocupação e soluções.

Espero que isso seja útil.

    
por 18.08.2011 / 22:32