【问题标题】:How to retrieve database queries in asp.net using AOP or something else?如何使用 AOP 或其他方式在 asp.net 中检索数据库查询?
【发布时间】:2019-12-10 19:57:42
【问题描述】:

我需要检索所有数据库查询。我在 IIS 中运行 asp.net。 我认为我们可以使用 AOP 来做到这一点,但不确定如何。我无法更改 asp.net 代码。我应该检索发送到数据库的所有查询。 我还需要一些方法来检索独立于数据库类型的所有查询

提前谢谢你

【问题讨论】:

  • 您好,欢迎来到 Stack Overflow。你能澄清你的问题吗?你真的想要“所有的数据库查询”吗?对于一个繁忙的 Web 应用程序,这可能是数十万个查询。检索到它们后,您想做什么 - 将它们写入磁盘,在日志查看器中查看它们?这是在实时服务器上吗?您是否查看过 SQL Server 工具 (docs.microsoft.com/en-us/sql/relational-databases/performance/…)?
  • 您可以使用SQL Server Profiler 工具来跟踪数据库查询。
  • @JalpaPanchal 感谢您的回复,但在这种情况下,我将无法跟踪 Oracle db 或其他数据库。我需要一些方法来跟踪任何类型的数据库
  • @NevilleKuyt 感谢您的回复。出于安全目的,我将根据用户特权和其他原因分析并删除它们
  • 请使用我们在 cmets 中要求的其他信息更新您的问题 - 这样,想要提供帮助的人就不必跟踪对话。我还是不明白“分析并丢弃”是什么意思。

标签: asp.net database iis aop


【解决方案1】:

首先要做的事:如果你不能修改 ASP.Net 代码,你就不能真正使用 AOP - 如果你可以通过这种方式将功能注入应用程序,那将是一个巨大的安全漏洞。

其次,即使是中等繁忙的 Web 应用程序也会生成大量的数据库查询。单个页面请求需要数十个数据库查询(许多希望被缓存!)并且单个服务器每秒处理数十或数百个请求的情况并不少见;每秒 100 次数据库请求并不罕见。

第三,您所做的任何减慢这些数据库请求的操作几乎肯定会减慢 Web 应用程序的速度,甚至可能会出现故障。

那么,可以做什么?

如果您可以修改 ASP.Net 代码,则可以按照this question. 中的建议进行操作,实现起来很简单,并且是迄今为止最干净的选择。

几乎每个 RDBMS 引擎都有一个“调整”解决方案,它允许您查看针对数据库的(实时)查询。这些工具针对调优进行了优化,因此不太可能影响 Web 应用程序的性能。

您可以嗅探数据库和服务器之间的网络流量。 Wireshark supports 几种数据库格式。

【讨论】:

  • 非常感谢您的详细回复。在使用 AOP 的 Java 和 Tomcat 的情况下,我有资格通过简单地将 JDBC 调用连接到 AOP 来获取所有查询和会话详细信息。所以在那种情况下,我不需要在那里更新任何代码。我正在为 asp.net 寻找类似的方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-01
  • 1970-01-01
  • 2016-07-29
相关资源
最近更新 更多