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

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

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

假设我做了类似的事情:

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

在这种情况下,没有针对 ToTraceString() 执行的 ObjectQuery,因此我无法真正了解幕后发生的事情。我相信有一些 Microsoft SQL Server 工具(如探查器或其他工具)可以帮助我查看查询。

此外,我认为 VS 2010 Ultimate 中的一些 Intellitrace 也做同样的事情?

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

更新

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

最佳答案

有更简单的方法,如果您只想查看访问数据库的 sql 查询。

这里有两个非常轻量级的 Sql 分析器,可以为各种 SqlServer 风格完成这项工作,包括 LocalDb - “在我的机器上工作 (TM)

ExpressProfiler

到目前为止,最容易使用的(也是最简单的 SQL 语句 kthxbye)是 ExpressProfiler on CodePlex .

下载小 ZIP,想知道你是否真的得到了整个文件(你做到了),在里面运行 EXE,BAM!

enter image description here

整个程序是一个 126 KB 的 EXE!现在它很轻!

AnjLab SQL 分析器

另一个是来自DataWizard的那个,过去是免费的(显然现在起价为 5 美元)。

有人设法保存了一个 snapshot on GitHub (包括 xcopy-installable 二进制文件)当它是开源的。

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

仅选择特定事件可以获得更合理的输出。

enter image description here

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

enter image description here

关于c# - 如何在 SQL 事件探查器中查看 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4118521/

相关文章:

c# - 从AD获取用户角色的简单方法?

c# - 使用 WebApi 和 Entity Framework 6.XX 从数据库中获取表数据

sql-server - BINARY_CHECKSUM() 中的字节表示?

database - 如何在另一个存储过程中调用存储过程

SQL查询查找单个上级下的所有下级

sql-server - SQL Server "Text"数据类型上的 WHERE 子句

c# - 非阻塞并发收集?

C# 在文本框中显示计时器

c# - ASP.Net MVC 4 使用属性还是 BaseController?

SQL-从左连接中删除重复项