首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何捕获所有通过Ado.Net发送的SQL

如何捕获所有通过Ado.Net发送的SQL
EN

Stack Overflow用户
提问于 2013-10-20 03:25:28
回答 4查看 7K关注 0票数 22

我有一个同时使用Entity Framework和Dapper的应用程序。我想提供一个自定义的记录器来注销通过ado.net连接发出的任何sql。做这件事的最好方法是什么?

或者,如果不容易实现,那么具体的困难是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-23 04:11:15

ADO.NET Data Tracing能为你工作吗?它插入到ETW中,从中您可以粘合您当前的日志记录系统。虽然看起来并不是很独立。

票数 7
EN

Stack Overflow用户

发布于 2015-02-20 21:14:29

Glimpse工具提供了跟踪SQL调用(以及大量其他信息)的能力,并且正在由ASP.NET团队积极推广:http://www.asp.net/mvc/overview/performance/profile-and-debug-your-aspnet-mvc-app-with-glimpse

票数 4
EN

Stack Overflow用户

发布于 2013-10-22 09:12:16

利用SharpPcap API并侦听在SQL运行的端口上客户机IP和SQL server IP之间建立的连接。然后,您可以运行regex或类似的命令来提取SQL命令。它们中的大多数将以INSERTUPDATESELECTDELETEEXEC开头。一旦你有了字符串,调用你所拥有的任何记录器,并根据需要进行记录。您可以将其作为服务运行,由您的应用程序启动的第二个应用程序,甚至可以在第一个应用程序的第二个线程中运行。它比ADO流水线稍微低一点,但这给了你更多的灵活性。您可以对服务器上的SQL事件探查器/ SQL跟踪收到的流量进行测试和比较,以验证它是否正常工作。

另一种方法是尝试修改ADO.Net代码的相关部分,并插入日志记录。像AfterThought https://github.com/vc3/Afterthought这样的工具可能是一个选择,尽管我认为这在除了最受控制的环境之外的所有环境中都是自找麻烦的,特别是在白名单,反病毒,更新,版本控制等方面。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19470129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档