是否可以在IIS中编写全局HttpModule并记录SQL

时间:2011-07-06 14:34:13

标签: c# sql-server httpmodule

是否可以在IIS中编写全局HttpModule并记录所有运行的.NET应用程序的所有SQL请求?如果是这样我应该从哪里开始?

我见过像http://newrelic.com这样的工具。他们的工具记录所有SQL,并不要求我在我的应用程序中放置任何特殊代码。事实上,它记录了所有应用程序的信息。

1 个答案:

答案 0 :(得分:2)

如果要记录SQL请求,则需要以下其中一项:

  1. 用于所有SQL请求的自定义数据层类,您可以记录每个调用。例如,使用调用SQLHelper的方法ExecuteQuery创建一个类SQLCommand.ExecuteQuery,然后传入查询并记录它。然后,您必须遵守规则,确保每个SQL调用都通过您的帮助程序类进行路由。
  2. 使用LINQ-To-SQL或Entity Framework等框架,该框架内置了Logging工具,例如通过DataContext.Log属性。
  3. 使用具有适当设置的SQL Server Profiler捕获SQL请求的跟踪,这些SQL请求可以转储到文件或表中以供以后处理。
  4. 您无法从.NET全局HTTP模块捕获所有标准ADO.Net SQL请求,因为您不了解或访问正在执行的所有当前连接和命令。