我怎么知道从特定服务器向我的SQL Server发出了多少查询?

时间:2013-10-28 05:16:05

标签: c# sql-server sql-server-2008 sql-server-2005

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

现在由于主数据库的极端负载而导致很多冲突,我们没有足够的统计数据来讨论。

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

我可以设置任何简单的工具或日志工具,然后开始计算从该服务器发出的查询数。

感谢。

P.S:我知道存在一个类似的问题,但它适用于mysql,并没有帮助解决我的问题。 “How can i know how many queries are fired in my database?

2 个答案:

答案 0 :(得分:1)

  1. 您只需使用SQL Server Profiler即可获取此类信息。长时间运行它是不切实际的,但如果你知道问题何时发生,你可以这样监控它。您可以保存输出并稍后进行分析。

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

答案 1 :(得分: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
***************************************************************

如果有效,请告知