在SQL SERVER中监视SQL查询的进度

时间:2010-07-20 12:03:31

标签: database sql-server-2005 monitor progress

我看到一个类似的问题,询问如何监控备份/恢复操作的进度: Is there a SQL script that I can use to determine the progress of a SQL Server backup or restore process?

我想知道是否有类似的查询/方式来查看查询剩余的时间,直到结束为止。 例如,一个查询通常具有5分钟的经过时间。 我想知道在查询执行期间它将结束多长时间。

4 个答案:

答案 0 :(得分:18)

没有办法知道剩下多少时间。查询的运行时取决于实际查询本身以外的许多内容:锁定/阻止其他查询,其他进程消耗资源(CPU /磁盘使用),操作系统,网络等。如果您的5分钟查询正在运行,那该怎么办?其他人开始发布大型报告,您的查询可能会在5:30开始运行。如果有人开始下载大文件并占用所有网络带宽怎么办?如果操作系统决定在后台执行某些操作,等等。在返回所有行之前,查询不会完成,但可以在可变的时间范围内运行。

答案 1 :(得分:18)

你想要的是Live Query Statistics

您可以在最新版本的SSMS中激活它,并在旁边的按钮旁边提供正常的查询计划:

enter image description here

然后,它会为您提供实时查询计划:

enter image description here

在底部,您会看到总进度:

enter image description here

答案 2 :(得分:12)

sys.dm_exec_requests有这样的信息,所以类似的东西会给你进步:

SELECT 
percent_complete
FROM sys.dm_exec_requests
--where session_id=51 or command like 'restore%'

答案 3 :(得分:4)

是的,你可以知道估计的经过时间,除非会有一些意外的情况影响过程的执行。

Select total_elapsed_time,
 * from sys.dm_exec_sessions where session_id="your Id here"