我看到了一个类似的问题,询问如何监控备份/恢复操作的进度: 是否有一个 SQL 脚本可以用来确定 SQL Server 备份或恢复过程的进度?
我想知道是否有类似的查询/方式来查看查询还剩多少时间才能结束。 例如,一个查询的经过时间通常为 5 分钟。我想知道在查询执行期间它会结束还有多少时间。
我看到了一个类似的问题,询问如何监控备份/恢复操作的进度: 是否有一个 SQL 脚本可以用来确定 SQL Server 备份或恢复过程的进度?
我想知道是否有类似的查询/方式来查看查询还剩多少时间才能结束。 例如,一个查询的经过时间通常为 5 分钟。我想知道在查询执行期间它会结束还有多少时间。
你想要的是Live Query Statistics。
您可以在最新版本的 SSMS 中使用为您提供正常查询计划的按钮旁边的按钮激活它:
然后,这将为您提供一个实时查询计划:
在底部,您会看到总进度:
sys.dm_exec_requests
有这些信息,所以这样的事情会给你带来进步:
SELECT
percent_complete
FROM sys.dm_exec_requests
--where session_id=51 or command like 'restore%'
没有办法知道还剩多少时间。查询的运行时间取决于实际查询本身之外的许多因素:锁定/阻塞其他查询、消耗资源的其他进程(CPU/磁盘使用情况)、操作系统、网络等。如果您的 5 分钟查询正在运行怎么办?其他人开始了大型报告,您的查询现在可能会在 5:30 运行。如果有人开始下载一个大文件并占用所有网络带宽怎么办?如果操作系统决定在后台做某事等。直到所有的行都返回,查询才完成,但它可以在可变的时间范围内运行。
是的,您可以知道估计的经过时间,除非有一些意外情况影响流程的执行。
Select total_elapsed_time,
* from sys.dm_exec_sessions where session_id="your Id here"