我看到一个类似的问题,询问如何监控备份/恢复操作的进度: Is there a SQL script that I can use to determine the progress of a SQL Server backup or restore process?
我想知道是否有类似的查询/方式来查看查询剩余的时间,直到结束为止。 例如,一个查询通常具有5分钟的经过时间。 我想知道在查询执行期间它将结束多长时间。
答案 0 :(得分:18)
没有办法知道剩下多少时间。查询的运行时取决于实际查询本身以外的许多内容:锁定/阻止其他查询,其他进程消耗资源(CPU /磁盘使用),操作系统,网络等。如果您的5分钟查询正在运行,那该怎么办?其他人开始发布大型报告,您的查询可能会在5:30开始运行。如果有人开始下载大文件并占用所有网络带宽怎么办?如果操作系统决定在后台执行某些操作,等等。在返回所有行之前,查询不会完成,但可以在可变的时间范围内运行。
答案 1 :(得分:18)
答案 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"