2014-02-25 73 views
0

我在尝试诊断客户端网站上的应用程序性能降低。如何检索先前查询的查询执行时间

客户端计算机上的日志文件告诉我从应用程序端测量的每个查询的执行时间。看起来,对远程数据库的许多简单查询花费了大量的时间来完成。例如,

SELECT CONVERT(varchar, GETDATE(), 121) 

此查询重复执行5秒钟以执行应用程序的定时。其他查询几乎一样简单(将一个记录集插入一张表)需要花费一分钟才能完成。在我的测试系统上(有客户数据库的副本),我没有遇到任何这些问题。

我会怀疑是一个缓慢的网络,除了从Crystal Reports运行报告后问题可靠地消失。然后1-2小时后应用程序再次减速。

为了进一步隔离问题,我想检索/记录服务器端的执行时间。我想弄清楚做这件事的最好方法是什么。我可以使用一个变量来获取单个查询的执行时间,但我没有修改我的应用程序中每个查询的选项。

sys.dm_exec_query_stats对于检索先前查询的执行时间看起来非常有希望,但是它为last_elapsed_time报告的毫秒值似乎太高。

任何人都可以帮我弄清楚如何获得我的查询时间?

回答

2

这是一种

set statistics time on 
SELECT CONVERT(varchar, GETDATE(), 121) 
set statistics time off 

而且它会为查询报告的查询花费的时间为

SQL Server parse and compile time: 
    CPU time = 0 ms, elapsed time = 0 ms. 
+0

不幸的是,我需要获得应用程序运行查询这些统计数据,不我从ssms手动执行。 – qianlong

+1

那么,你可以从你的客户端应用程序得到相同的消息。例如:http://stackoverflow.com/questions/765142/access-to-sql-server-messages-via-ado-net和http://stackoverflow.com/questions/5008826/retrieve-set-statistics-io -and-设置统计的时间值,通过-ADO网 – leoh