Published on

November 27, 2011

Понимание прогресса резервного копирования и восстановления в SQL Server

Вы когда-нибудь задумывались, сколько времени вам нужно ждать завершения команды резервного копирования или восстановления в SQL Server? Если вы выполняете резервное копирование или восстановление через графический интерфейс в Management Studio, он показывает вам прогресс каждые 10%. Но что делать, если вы выполняете команду резервного копирования или восстановления самостоятельно и не указали параметр статистики? Резервное копирование также может быть выполнено сторонним продуктом резервного копирования или даже одним из ваших коллег.

К счастью, эта информация довольно легко находится с помощью DMV (Dynamic Management View) sys.dm_exec_requests. Этот DMV предоставляет информацию о выполнении запросов в SQL Server, включая прогресс команд резервного копирования и восстановления.

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

SELECT command,
       s.text,
       start_time,
       percent_complete,
       CAST(((DATEDIFF(s, start_time, GETDATE())) / 3600) AS varchar) + ' час(ов), ' +
       CAST((DATEDIFF(s, start_time, GETDATE()) % 3600) / 60 AS varchar) + ' мин, ' +
       CAST((DATEDIFF(s, start_time, GETDATE()) % 60) AS varchar) + ' сек' AS running_time,
       CAST((estimated_completion_time / 3600000) AS varchar) + ' час(ов), ' +
       CAST((estimated_completion_time % 3600000) / 60000 AS varchar) + ' мин, ' +
       CAST((estimated_completion_time % 60000) / 1000 AS varchar) + ' сек' AS est_time_to_go,
       DATEADD(second, estimated_completion_time / 1000, GETDATE()) AS est_completion_time
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) s
WHERE r.command IN ('RESTORE DATABASE', 'RESTORE VERIFYON', 'BACKUP DATABASE', 'RESTORE LOG', 'BACKUP LOG')

Этот скрипт извлекает информацию, такую как выполняемая команда, SQL-текст, время начала, процент выполнения, время выполнения, оценочное время до завершения и ожидаемое время завершения.

Запустив этот скрипт, вы можете отслеживать прогресс вашей команды резервного копирования или восстановления и получить представление о том, сколько времени осталось до завершения команды.

Кроме того, другие команды, такие как “DBCC TABLE CHECK” и “DbccFilesCompact”, также показывают ожидаемое время завершения. Эти команды могут быть полезны, когда вы хотите знать, сколько времени осталось для задач, таких как проверка целостности базы данных или уменьшение размера файлов базы данных.

Важно отметить, что ожидаемое время завершения, предоставляемое этими командами, является только оценкой, и фактическое время может отличаться. Однако в большинстве случаев оно даст вам представление о том, займет ли команда минуты, часы или даже дни для завершения.

В следующий раз, когда вы будете ждать команды резервного копирования/восстановления или любой другой команды, перечисленной в статье SQL Server Central, попробуйте использовать вышеуказанный скрипт для отслеживания прогресса и оценки времени завершения. Это может сэкономить вам время и помочь планировать задачи более эффективно.

Счастливого администрирования SQL Server!

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.