Как получить текущий процент выполнения запроса к БД SQL Server

В SQL Server некоторые пользовательские запросы, выполняемые к той или иной базе данных могут не иметь информации о статусе выполнения в графической оболочке SQL Server Management Studio (SSMS).

Например, если в консоли SSMS администратор вызовет сжатие БД через графический интерфейс, то в окне выполнения задачи он может не увидеть процесс выполнения задачи.

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

SELECT
	[command]
	,[start_time]
	,[percent_complete]
	,[estimated_completion_time] / 60000. AS [estimated_completion_time_min]
FROM sys.dm_exec_requests
WHERE [command] LIKE '%compact%'

Если мы не знаем, как называется выполняемая команда, то просто уберём последнюю строку, чтобы получить список всех выполняемых к БД запросов:

SELECT
	[command]
	,[start_time]
	,[percent_complete]
	,[estimated_completion_time] / 60000. AS [estimated_completion_time_min]
FROM sys.dm_exec_requests

Дополнительная информация:


Проверено на следующих конфигурациях:

Версия SQL Server Версия SSMS
Microsoft SQL Server 2016 SP2 CU4 (13.0.5233.0) Microsoft SQL Server Management Studio 17.9.1

Автор первичной редакции:
Алексей Максимов
Время публикации: 06.02.2019 11:41