有没有办法记录/跟踪从WCF服务发出的所有SQL查询?

时间:2011-09-16 20:52:04

标签: c# wcf azure-sql-database

我正在开发一个WCF服务,我希望能够在我在本地运行时获取它所做的所有SQL查询的转储。

目前正在通过大量传播SqlCommand来执行sprocs所以我想得到一个已运行的每个查询的列表。

我可以设置任何类型的工具或配置来记录此信息吗?通常我会使用类似SQL Profiler的东西,但我正在寻找从WCF角度运行的东西,因为我正在访问Azure数据库而SQL Profilier将不能与Azure一起工作(afaik)

2 个答案:

答案 0 :(得分:1)

我不知道在使用SqlCommand / SqlConnection时记录所有sql代码的内置方法。

我在msdn上发现了这篇文章:Data Access Tracing in SQL Server 2008也许它指出了你正确的方向。

我能想象的一种更简单但不是非常通用的方法是编写一个继承自SqlCommand的类,并在添加一些日志记录时将所有方法委托给真正的SqlCommand。

答案 1 :(得分:1)

是的,按照Jan所说的我不知道只有一个带有SQlCommand / SQLConnections的通用记录器,你可以插入但是如果你从标准化的地方生成你的SQLCommands你可以使用

StatementCompletedEventHandler

从那里将命令文本传递给某种通用记录器,如log4net / Console.Write /或来自MS Ent Lib的东西

可能不是你希望的简单解决方案:-)理想情况下,你可以在配置文件中注册一些日志类,但我不知道这样的任何东西: - /