Acronis Backup 12.5 не может выполнить резервное копирование из-за ошибки 0x800423F4
Здравствуйте.
В Acronis Backup 12.5 в который раз наблюдаю проблему, из-за которой план резервного копирования завершается с ошибкой. Суть проблемы заключается в том, что, если выполняется план резервного копирования сервера, на котором хотя бы одна из баз данных Microsoft SQL Server открыта в однопользовательском режиме, то этот план завершится с ошибкой.
Следующая ошибка сопровождает такой план:
Не удалось начать создание снимка тома.
Ошибка Windows: (0x800423F4) Модулю записи VSS "SqlServerWriter" с идентификатором класса "A65FAA63-5EA8-4EBC-9DBD-A0C4DB26912A" не удалось обработать моментальный снимок.
В этот момент на сервере видно, что одна из баз Microsoft SQL Server используется в однопользовательском режиме:
База данных "1CSQL" уже открыта, и одновременно к ней может обращаться только один пользователь. (Microsoft SQL Server, ошибка: 924)
02/04/2018 17:00:47,spid79,Неизвестно,BackupVirtualDeviceFile::PrepareToFreeze: failure on backup device '{1F6F1C23-4EE6-4E48-85ED-DC668F7A432D}1'. Operating system error 995(Операция ввода/вывода была прервана из-за завершения потока команд или по запросу приложения.).
02/04/2018 17:00:47,spid79,Неизвестно,Ошибка: 18210<c/> серьезность: 16<c/> состояние: 1.
02/04/2018 17:00:46,,Неизвестно,BACKUP failed to complete the command BACKUP DATABASE 1CSQL. Check the backup application log for detailed messages.
02/04/2018 17:00:46,,Неизвестно,Ошибка: 3041<c/> серьезность: 16<c/> состояние: 1.
Ошибка Sqllibr: при вызове ICommandText::Execute произошла ошибка OLEDB. hr = 0x80040e14. SQLSTATE: 42000, Native Error: 3013
Error state: 1, Severity: 16
Source: Microsoft SQL Server Native Client 10.0
Error message: BACKUP DATABASE прервано с ошибкой.
SQLSTATE: 42000, Native Error: 924
Error state: 1, Severity: 14
Source: Microsoft SQL Server Native Client 10.0
Error message: База данных "1CSQL" уже открыта, и одновременно к ней может обращаться только один пользователь.
Какие необходимо выполнить настройки в Acronis Backup 12.5, операционной системе или в Microsoft SQL Server, чтобы при выполнении плана резервного копирования игнорировались базы, открытые в однопользовательском режиме? Ведь в противном случае не выполняется резервное копирование всего сервера!

- Log in to post comments

Здравствуйте, Василий.
В моём случае - это обычный план резервного копирования разделов, который выполняется установленным внутри ОС агентом. Проблема достаточно легко воспроизводится: необходимо перевести любую из баз данных Microsoft SQL в однопользовательский режим, например, таким запросом:
ALTER DATABASE Temp SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
Обратный запрос:
ALTER DATABASE Temp SET MULTI_USER;
Перевод любой базы в однопользовательский режим приводит к тому, что Acronis Backup делает 3 попытки создать мгновенный снимок раздела с базой данных с интервалом в 10 минут, после чего план завершается с ошибкой 0x800423F4.
- Log in to post comments

Юрий, спасибо за подробности. На данный момент поддержки исключения SQL баз запущенных в одно-пользовательском режиме из бэкапа нет, и мы запланировали добавить её в будущих версиях продукта (внутренний номер ABR-153074).
Возможный вариант обхода (проблема затрагивает только application-aware бэкап, т.е. одно-проходное резервное копирование целиком машины с поддержкой приложений):
- Отключить опцию application бэкапа в настройках плана резервного копирования, т.е. выполнять бэкап дисков-томов машины без поддержки приложений.
- Создать отдельный план по защите SQL баз (выбрать "SQL" в секции плана "Выбор данных"), и явно исключить базы в одно-пользовательском режиме из бэкапа (выбрать всё остальное).
Спасибо.
- Log in to post comments

Спасибо, Василий, за информацию.
Только мне не удалось найти опцию application бэкапа в настройках плана резервного копирования, это VSS?
- Log in to post comments

Да, я немного ошибся в этом моменте (мой предыдущий коммент - тоже правда, но не вся). В случае резервного копирования машины, в том числе без включенной опции Application Backup, будет иметь значение опция VSS, т.к. не может выполниться именно снятие VSS снапшота вольюма внутри машины, который отваливается на SQL VSS writer. Повлиять на процесс создания VSS снапшота мы со своей стороны не можем (т.к. он выполняется сервисом Microsoft), поэтому проблему нужно обходить.
Итого: машину можно либо бэкапить с отключенным VSS, либо добавить SQL VSS Writer в исключения, чтобы он не использовался, в следующем ключе в реестре:
1) Открыть следующий ключ в реестре (regedit): [HKEY_LOCAL_MACHINE\SOFTWARE\Acronis\SnapAPI]
2) Создать новое значение типа "multi-string": VssWritersToDisable
3) В этом значении прописать ID VSS райтера, который требуется исключить (можно перечислить несколько ID райтеров - каждый на новой строке). Пример вывода vssadmin list writers:
Writer name: 'SqlServerWriter'
Writer Id: {a65faa63-5ea8-4ebc-9dbd-a0c4db26912a}
Writer Instance Id: {9a110947-abf2-4615-be89-a88c3b632ffd}
State: [1] Stable
Last error: No error
в значение VssWritersToDisable нужно прописать ID выделенный жирным (вместе с фигурными скобками).
4) Перезапустить Acronis Managed Machine Service на машине.
Спасибо.
- Log in to post comments
In reply to Да, я немного ошибся в этом… by truwrikodrorow…

Василий, добрый день. Столкнулся с аналогичными проблемами. Но увы в реестре нет HKEY_LOCAL_MACHINE\SOFTWARE\Acronis\SnapAPI
?
- Log in to post comments

Добрый день.
А если нет HKEY_LOCAL_MACHINE\SOFTWARE\Acronis\SnapAPI в реестре?
- Log in to post comments

Анатолий,
Этого ключа по умолчанию нет и его нужно создать мануально (ключ 'SnapAPI' + multi-string значение VssWritersToDisable внутри).
P.S. Помните, что инструкции подходят только к случаям если резервное копирование выполняется агентами установленными внутри машины: Agent for Windows + Agent for SQL, т.е. например к бэкапам виртуальных машин, которые выполняются в без-агентном режиме, это не применимо. В случае VMware, отдельные VSS writers можно отключить через конфигурационный файл от VMware Tools внутри гостевой системы (см статью).
Спасибо.
- Log in to post comments

Столкнулся с аналогичной проблемой, но вот этот вариант:
- Создать отдельный план по защите SQL баз (выбрать "SQL" в секции плана "Выбор данных"), и явно исключить базы в одно-пользовательском режиме из бэкапа (выбрать всё остальное).
как-то фу...
сделал так.
Выводим список зарегистрированных в системе модулей VSS
vssadmin list writers
ищем сбойный модуль
Имя компонента записи: "SqlServerWriter"
Id компонента записи: {a65faa63-5ea8-4ebc-9dbd-a0c4db26912a}
Id экземпляра компонента записи: {de655151-77a0-430d-8287-bb6615d90497}
Состояние: [8] Неисправен
Последняя ошибка: Неповторяемая ошибка
ищем отвечающую за него службу, это SQLWriter
пишем суперсложный скрипт
net stop "SQLWriter"
net start "SQLWriter"
засовываем его в секцию "команды до и после операции", на выполнение "до", оставляем галочку "не начинать до полного выполнения команды".
Проверяем - работает? вы великолепны )
Нет?
На самом деле, может еще понадобиться прибить процесс зависшей службы, это тоже можно засунуть в скрипт.
И в самом тяжелом случае, если не помогло, то добавляем в скрипт перерегистрацию компонентов VSS
Net Stop VSS
Net Stop SWPRV
regsvr32 /s ole32.dll
regsvr32 /s oleaut32.dll
regsvr32 /s vss_ps.dll
vssvc /register
regsvr32 /s /i swprv.dll
regsvr32 /s /i eventcls.dll
regsvr32 /s es.dll
regsvr32 /s stdprov.dll
regsvr32 /s vssui.dll
regsvr32 /s msxml.dll
regsvr32 /s msxml3.dll
regsvr32 /s msxml4.dll
vssvc /register
Net Start SWPRV
Net Start VSS
Костыль? Да. Но делается быстро, работает эффективно.
- Log in to post comments

Hello Dmitry,
welcome to Acronis forums!
Thank you for publishing your solution and sharing it with forum users!
- Log in to post comments