Поделиться через


Остановка служб для восстановления по запросу

Может потребоваться остановить службу до и перезапустить после операции восстановления.

Как правило, остановка и запуск службы для поддержки восстановления выполняется писателем при обработке события PreRestoreCVssWriter::OnPreRestore) и события PostRestoreCVssWriter::OnPostRestore).

Однако могут случаться случаи, когда запрашивающий должен прямо остановить запущенную службу. Авторы указывают, если это действительно так, задавая значение VSS_RME_STOP_RESTORE_START или VSS_RME_RESTORE_STOP_START в перечислении VSS_RESTOREMETHOD_ENUM в качестве аргумента для метода IVssCreateWriterMetadata::SetRestoreMethod, и указывая имя службы, которую необходимо остановить.

Запрашивающий объект получает сведения о методе восстановления и имя службы, которую необходимо остановить при работе с метаданными записи с помощью метода IVssExamineWriterMetadata::GetRestoreMethod.

Важно, чтобы автор, указывая имя службы, которую необходимо остановить, использовал правильное общеизвестное имя этой службы. Нечеткое или неточное название может привести к остановке неправильной службы или затруднить определение, какую службу следует остановить.

После завершения операции восстановления инициаторы запроса должны перезапустить службу.

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

Модуль записи, процесс которого остановлен, будет иметь другой экземпляр записи при перезапуске. Новый экземпляр модуля записи не получит события VSS, предназначенные для исходного экземпляра записи. В частности, если процесс экземпляра записи останавливается после обработки события PreRestore, новый экземпляр не получит событие PostRestore. Кроме того, VSS создаст ошибку, указывающую на потерю участника записи в операции восстановления, и IVssBackupComponents::P ostRestore может вернуть сбой.