监视ColdFusionpipe理员中的SQL事务?

使用CF9,IIS和MSSQL,有没有一种方法来监视脚本发送的SQL命令? 显示原始查询的东西,最好。

看到WEBrick和Ruby on Rails实际上将生成的查询转储到控制台后,我想到了CF9是否有类似的东西。

您可以使用SQL Server Profiler来执行此操作。 你将不得不设置跟踪来捕获你想要的,但它肯定会给你的原始查询。

有关Profiler的信息,请参阅此MSDN文章

有多种解决scheme。 正如@squillman所指出的,您可以通过Profiler在SQL Server中查看它。 但是在CF范围内,你有其他的select。

  • 您可以打开CF的debugging输出以在请求结束时查看查询信息。 当然,这有利有弊。 如果在开发中,总体来说还是不错的。 在prod中,最好避免它(即使限制了可以查看debugging输出的IP地址,许多人声称即使用户仍然支付产生的debugging成本)。
  • 您也可以在代码中自行logging信息。 由于CF7,有一个新的RESULT属性,它包含关于查询的数据,包括SQL语句的结构。 你可以用CFLOG,CFTRACE和其他标签(或相关的脚本函数)写出来。
  • 你也可以让CF自己logging它。 在CF8中添加了一个鲜为人知的function,在数据源定义的“高级设置”中的一个新的checkbox(在CF Admin中)可以让你“logging活动”。 小心,这是相当详细的。
  • 您也可以在各种CF服务器监视器中使用内置的监视function,无论是CF Enterprise(或开发人员,而不是标准)中的免费软件还是第三方软件FusionReactor和SeeFusion。 但是,CFSM只关注慢速查询。 FR和SF可以显示给定请求中的每个查询(或者服务器上的所有查询,包括那些与任何查询都没有关联的查询,比如客户端variables清除等等)。我认为我特别喜欢FR,logging每个查询(如果启用查询logging),而SF再次只logging慢查询。 (每个可以更改为其他select。)
  • 最后,所有这些工具都通过包装JDBC驱动程序来执行查询日志logging。 您也可以自己手动完成,无需使用这些工具,可以使用许多jdbc包装选项。 只是谷歌jdbc包装,你会发现很多。

我也在一个博客条目中更详细地讨论了所有这些选项,尽pipe它专注于监视CF中的ORM查询,但它同样适用于CF生成的任何查询(以及任何CFML引擎): Spying在任何CFML引擎上进行ORM数据库交互:Hibernate,Transfer等 。

最后,我会注意到,对于使用SQL Server Profiler,请注意它也有它的优点和缺点(它可以生成更多关于查询的详细信息作为选项,甚至包括每个查询的执行计划图,这是很好的,但它也像任何监视有一定的开销风险取决于如何configuration。许多资源存在解决这个问题和解决scheme。

希望这是有帮助的。