Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

MSSQL_BACKUP_PROGRESS_DMV 1С:Предприятие и СУБД

Мониторинг бэкапа и восстановления MSSQL: расчет ETA через DMV

Обновлено: 26.08.2026 · Официальная документация ↗
  • Длительное выполнение операции RESTORE DATABASE или BACKUP без визуального прогресса в SSMS.
  • Необходимость точной оценки времени окончания восстановления (Estimated Time of Arrival) при ликвидации аварии.
  • Подозрение на зависание сессии ввода-вывода или блокировку процесса дисковой подсистемой.

1. Запрос мониторинга операций BACKUP / RESTORE в реальном времени

SELECT 
    r.session_id,
    r.command,
    CONVERT(NUMERIC(6,2), r.percent_complete) AS [% Complete],
    CONVERT(VARCHAR(20), DATEADD(ms, r.estimated_completion_time, GETDATE()), 120) AS [Estimated Completion Time],
    CONVERT(NUMERIC(10,2), r.total_elapsed_time / 1000.0 / 60.0) AS [Elapsed Min],
    CONVERT(NUMERIC(10,2), r.estimated_completion_time / 1000.0 / 60.0) AS [Estimated Remaining Min],
    r.wait_type,
    r.wait_time,
    r.last_wait_type,
    t.text AS [SQL Text]
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE r.command IN ('BACKUP DATABASE', 'RESTORE DATABASE', 'BACKUP LOG', 'RESTORE LOG', 'RESTORE HEADERONLY');

2. Анализ ожиданий (Wait Types) во время выполнения операции

Если процесс не двигается, проверьте текущий тип ожидания сессии:

  • PAGEIOLATCH_SH / PAGEIOLATCH_EX: упор в скорость чтения/записи накопителей.
  • ASYNC_IO_COMPLETION: медленный отклик удаленного сетевого хранилища или ленты.
  • BACKUPIO / BACKUPBUFFER: несбалансированность параметров BUFFERCOUNT и MAXTRANSFERSIZE.

3. Расчет текущей скорости передачи данных (МБ/сек)

SELECT 
    session_id,
    command,
    percent_complete,
    (reads * 8.0 / 1024 / (total_elapsed_time / 1000.0)) AS [Read_MB_per_sec],
    (writes * 8.0 / 1024 / (total_elapsed_time / 1000.0)) AS [Write_MB_per_sec]
FROM sys.dm_exec_requests
WHERE command LIKE '%BACKUP%' OR command LIKE '%RESTORE%';
💡 Практика специалистов: Для мгновенного восстановления баз данных обязательно включите в Windows групповую политику 'Perform volume maintenance tasks' (Instant File Initialization, IFI) для сервисной учетной записи SQL Server — это исключит многочасовую инициализацию файлов нулями.

Частые вопросы (FAQ)

Почему percent_complete иногда зависает на 100% при RESTORE?

После наката данных наступает фаза восстановления (Redo/Undo Phase) и инициализации файлов. Если в базе было много активных незафиксированных транзакций или включена инициализация нулями (без IFI), процесс может занять значительное время.

Отображает ли sys.dm_exec_requests прогресс восстановления отдельных журналов транзакций?

Да, если восстанавливается крупный файл журнала. При накате множества мелких файлов транзакций каждая команда RESTORE LOG регистрируется как отдельная быстрая операция.

Как параметр STATS = 5 влияет на вывод в Management Studio?

Параметр STATS = 5 заставляет SQL Server выводить сообщение о статусе каждые 5% завершения во вкладку Messages клиента, что удобно для консольных скриптов sqlcmd.

Можно ли безопасно прервать зависшую операцию RESTORE через KILL <SPID>?

Да, однако прерывание переведет базу данных в состояние RESTORING или SUSPECT, и весь процесс восстановления придется начинать с самого начала.

Полезные материалы
Рекомендуем