【发布时间】:2011-07-13 06:49:04
【问题描述】:
我有一个带有 SQL Server 2008 后端的 ASP.NET 3.5 Web 应用程序。
记录所有数据库访问的新要求如下:
对于选择:
- 执行了什么存储过程
- 传递了哪些参数
对于插入:
- 执行了什么存储过程
- 传递了哪些参数
- 记录插入的行
对于更新:
- 执行了什么存储过程
- 传递了哪些参数
- 记录旧行
- 记录新行
对于删除:
- 执行了什么存储过程
- 传递了哪些参数
- 记录已删除的行
还有一个报告要求,但目前这并不重要。
在我开始编写自己的记录器之前,我想知道是否有任何解决方案可以做到这一点?
Change Data Capture 看起来很有希望,但只记录数据更改(没有选择)
p.s.:我的 Web 应用程序有一个“本地安装”选项,用户可以在其中购买源代码并托管应用程序,因此 SQL Profiler 将无法用作this question中所述的记录器
【问题讨论】:
-
我们在 Linq 中使用调试编写器,在使用实体框架时使用类似的东西。它旨在将运行的查询输出到调试窗口,我相信它们很容易用谷歌搜索。如果您使用的是 ORM,也许您可以调整这些 TextWriters(它们基本上就是这样)以输出到某个地方的日志?
-
@Smudge202:我没有使用 ORM
-
应用建立在 DotNetNuke 框架之上,我使用 DNN 的 DAL 访问数据库。
-
我对 DNN 不熟悉,但如果要编写自己的日志记录,我会看看您是否可以使用 log4net 或其他类似的日志记录框架之一。
-
您真的需要滚动您自己的记录器,还是可以通过使用 SQL Profiler 获得?如果这是用于持续记录,那么我猜是前者,但如果它只是临时的或临时的,探查器可能会提供服务。
标签: asp.net security sql-server-2008 logging