Начиная с SQL Server 2005 для команд BACKUP, RESTORE и некоторых команд DBCC (например, DBCC CHECKDB) появилась возможность узнать процент выполнения запроса в процессе выполнения команды. При запуске команд BACKUP и RESTORE можно указать параметр STATS, но этим можно пользоваться только в интерактивном режиме. А у команд DBCC аналогичного параметра вообще нет. Но очень часто бывает полезным узнать процент выполнения данных команд и приблизительное время окончания. На помощь нам приходит системное представление sys.dm_exec_requests. Для примера я запущу резервное копирование, восстановление и проверку целостности на тестовом сервере (каждую из этих команд я запускаю в отдельном окне):
DBCC CHECKDB('TEST'); BACKUP DATABASE [TEST2] TO DISK = 'C:\TEMP\TEST2.bak'; RESTORE DATABASE [TEST3] FROM DISK = 'C:\TEMP\TEST3.bak'; |
И давайте следующим запросом посмотрим процесс выполнения этих команд:
SELECT [command] ,[start_time] ,[percent_complete] ,[estimated_completion_time] / 60000. AS [estimated_completion_time_min] FROM sys.dm_exec_requests WHERE [command] = 'BACKUP DATABASE' OR [command] = 'RESTORE DATABASE' OR [command] LIKE '%DBCC%' |
Результаты получаются примерно такие: