Отслеживание хода выполнения SQL-запроса в SQL SERVER - PullRequest
18 голосов
/ 20 июля 2010

Я видел аналогичный вопрос, в котором спрашивалось, как отслеживать ход операции резервного копирования / восстановления: Существует ли сценарий SQL, который можно использовать для определения хода процесса резервного копирования или восстановления SQL Server?

Я хотел бы знать, существует ли аналогичный запрос / способ узнать, сколько времени осталось до того, как запрос закончится. Например, для одного запроса обычно 5минут.Я хотел бы знать, сколько времени осталось до его окончания во время выполнения запроса.

Ответы [ 4 ]

19 голосов
/ 16 марта 2017

То, что вы хотите: Статистика активных запросов .

Вы можете активировать ее в самой последней версии SSMS, нажав кнопку рядом с той, которая дает вам обычный план запроса:

enter image description here

Затем вы получите план запроса в реальном времени:

enter image description here

Внизу вы видите общий прогресс:

enter image description here

17 голосов
/ 20 июля 2010

Нет способа узнать, сколько времени осталось.Время выполнения запроса зависит от многих вещей, помимо самого запроса: блокировка / блокировка других запросов, другие процессы, потребляющие ресурсы (использование процессора / диска), операционная система, сеть и т. Д. Что если ваш 5-минутный запрос выполняется, но покакто-то другой запускает большой отчет, ваш запрос может быть запущен в 5:30.Что делать, если кто-то начинает скачивать большой файл и загружает всю пропускную способность сети?Что, если ОС решит что-то сделать в фоновом режиме и т. Д. До тех пор, пока не будут возвращены все строки, запрос не будет выполнен, но он может выполняться в переменном временном интервале.

13 голосов
/ 15 декабря 2011

sys.dm_exec_requests имеет эту информацию, поэтому что-то подобное даст вам прогресс:

SELECT 
percent_complete
FROM sys.dm_exec_requests
--where session_id=51 or command like 'restore%'
5 голосов
/ 01 октября 2015

Да, вы можете узнать приблизительное время, прошедшее до тех пор, пока не возникнет непредвиденная ситуация, влияющая на выполнение процесса.

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