0

背景:
我在一家有两个部门使用同一个主数据库的公司工作。一个部门的申请是由我的团队开发的,而另一个部门的申请是外包的。此应用程序是基于 Windows 的应用程序,多个用户同时在系统上工作。

由于主数据库上的极端负载,现在发生了很多冲突,我们没有足够的统计数据来辩论。

现在我想知道,有多少查询是从其他应用程序中触发的。他们的源代码对我们不可用。

有没有我可以设置的简单工具或日志记录工具,然后它开始计算从该服务器触发的查询数。

谢谢。

PS:我知道存在一个有点类似的问题,但它是针对 mysql 的,无助于解决我的问题。“我怎么知道在我的数据库中触发了多少查询?

4

2 回答 2

1
  1. 您可以简单地使用 SQL Server Profiler 来获取此类信息。长时间运行它是不切实际的,但如果您知道问题何时发生,您可以通过这种方式对其进行监控。您可以保存输出并稍后进行分析。

  2. 您可以使用一些商业上可用的工具来记录数据库中的所有活动。其中一些非常好,可以让您详细分析信息。

于 2013-10-28T05:27:51.963 回答
0

以下查询将为您提供在服务器上触发的所有查询,并在其上触发特定的数据库名称......

**********************************************************
select db_name(sql_text.dbid) as [Database],
case db_id()
when sql_text.dbid then object_name(sql_text.objectid)
else cast(sql_text.objectid as sysname) end as [Object],
sql_text.text as [AllTSQL],
dbo.GetTSQLFragment(
sql_text.text,
statement_start_offset,
statement_end_offset) as [FragmentTSQL]
from sys.dm_exec_query_stats stats
cross apply sys.dm_exec_sql_text(sql_handle) as sql_text
***************************************************************

请告知这是否有效

于 2013-10-28T06:15:39.240 回答