如何在SQL事件探查器中查看SQL查询?

时间:2010-11-07 16:09:45

标签: c# sql-server sql-server-2005 entity-framework entity-framework-4

当我发布更新查询或其他数据操作语言(DML)查询以更改数据库中的数据时,如何使用Entity Framework 4,如何查看发送到SQL Server的查询?

假设我做了类似的事情:

someEntityObjectInstance.SomeProperty = newValue;
context.SaveChanges();

在这种情况下,没有ObjectQuery来执行ToTraceString(),所以我无法真正看到幕后发生了什么。我相信有一些Microsoft SQL Server工具,比如探查器或者可以帮助我查看查询的东西。

另外,我认为VS 2010 Ultimate中的一些Intellitrace会做同样的事情吗?

如果有这样的事情,你能教我如何使用SQL 2005 Profiler吗?

更新

我正在查看SQL Server 2005 Profiler中的跟踪但是当我发出context.DeleteObject()调用或更新对象并调用context.SaveChanges()时,我看不到UPDATE或DELETE查询剖析器。我只看到奇怪的SELECT查询。

2 个答案:

答案 0 :(得分:7)

有更简单的方法,如果你想要的只是在他们点击数据库时看到sql查询。

以下是两个非常轻量级的Sql剖析器,可以完成各种SqlServer风格的工作,包括LocalDb - “在我的机器上工作(TM)

ExpressProfiler

到目前为止,最容易使用的一个(也是最简单的-s-show-me-the-SQL-statements-kthxbye)是ExpressProfiler on CodePlex

下载小型ZIP,想知道你是否真的拥有整个文件(你做过),在内部运行EXE,BAM!

enter image description here

整个程序是单个126 KB EXE!现在那很轻!

AnjLab Sql Profiler

另一个是来自DataWizard的那个,曾经是免费的(显然价格现在从5美元开始)。

有人设法在开源时保存snapshot on GitHub(包括xcopy可安装的二进制文件)。

可执行文件将自身表示为“AnjLab Sql Profiler”并允许对显示的事件进行一些过滤 - 但这种优势也是它的弱点,因为有太多的事件类型可以启用/禁用。如果选择了所有内容,则输出结果非常冗长。

只有选择特定事件才能获得更好的输出。

enter image description here

以下是为了获得上述输出而选择的事件:

enter image description here

答案 1 :(得分:2)

你回答了,sql server工具名为profiler

编辑:

http://msdn.microsoft.com/en-us/library/ms187929.aspx