Ситуация, когда после аварийного отключения питания или скачка напряжения серверные базы 1С перестают запускаться, выдавая «Ошибку формата потока», является довольно распространенной и критической для бизнеса. Самое неприятное в этой ситуации то, что стандартные методы, такие как очистка пользовательского кэша или переустановка платформы, часто не приносят результата. Проблема кроется глубже — на уровне служебных файлов сервера 1С и реестра кластера.
В этой статье мы подробно разберем, почему возникает эта ошибка, и проанализируем пошаговый алгоритм восстановления работоспособности сервера. Мы рассмотрим методы очистки серверного кэша, работу с реестром кластера и особенности взаимодействия с SQL-сервером.
Прежде чем переходить к активным действиям, давайте разберем природу ошибки. «Ошибка формата потока» означает, что программа при чтении данных из файла или сетевого пакета ожидает структуру определенного вида, но получает поврежденный набор байтов. При резком выключении сервера операционная система может не успеть дозаписать данные в служебные файлы 1С. В результате файлы реестра или закэшированные метаданные оказываются «битыми» (например, заполненными нулевыми байтами).
Первым делом проанализируем состояние временных данных сеансов. В папке с данными кластера 1С существует директория snccntx, где хранятся данные активных сеансов. После сбоя эти данные могут блокировать корректный запуск служб.
services.msc).C:\Program Files\1cv8\srvinfo.reg_1541) и внутри нее удалим папку snccntx.Если очистка сеансов не помогла, проанализируем состояние реестра кластера. Основной файл, в котором хранятся настройки всех баз — это 1CV8Reg.lst. Если он поврежден, 1С не сможет инициализировать список информационных баз.
Важно: При удалении содержимого srvinfo список баз в консоли администрирования станет пустым. Вам придется добавлять их заново, зная имена баз на SQL-сервере.
Разберем процесс по шагам:
C:\Program Files\1cv8\srvinfo.srvinfo. Если данных много, можно удалить только содержимое вложенной папки reg_1541.Многие администраторы совершают ошибку, очищая кэш только под своей учетной записью. Однако служба 1С работает от имени системного пользователя (обычно usr1cv8). Рассмотрим, как вычистить «мусор» оттуда.
Проанализируем пути к папкам кэша службы:
C:\Users\usr1cv8\AppData\Local\TempC:\Users\usr1cv8\AppData\Local\1C\1cv8C:\Users\usr1cv8\AppData\Roaming\1C\1cv8Также крайне желательно очистить общую временную папку Windows: C:\Windows\Temp. После удаления содержимого этих папок при остановленной службе, сервер 1С при следующем запуске создаст новые, корректные файлы кэша метаданных.
Иногда проблема кроется не в 1С, а в самом SQL-сервере, который перевел базу в аварийный режим после сбоя. Рассмотрим, как это проверить:
(Suspended), (Recovery Pending) или (Inaccessible), значит, SQL-сервер не может корректно открыть файлы базы .mdf или .ldf.OFFLINE, а затем снова в ONLINE. Если это не помогает, потребуется выполнение команд DBCC CHECKDB для восстановления целостности.Рассмотрим ситуацию, когда база в SQL создается, но 1С выдает ошибку формата потока при попытке подключения. Это может быть связано с тем, что консоль администрирования или сам rphost пытаются использовать протокол IPv6, который после сбоя начал работать некорректно.
Выполним следующие настройки:
hosts по адресу C:\Windows\System32\drivers\etc\hosts. Например: 127.0.0.1 ServerName.Если после всех манипуляций ошибка сохраняется, убедитесь, что антивирус не блокирует доступ к папке srvinfo. Проанализируем настройки исключений: процессы ragent.exe, rmngr.exe и rphost.exe должны быть добавлены в доверенные, а папка с данными сервера исключена из проверки в реальном времени.
Как показывает практика, в 90% случаев после сбоя питания помогает именно комбинированный метод: остановка службы -> полная очистка srvinfo -> очистка папок Temp системного пользователя usr1cv8 -> запуск службы и ручное переподключение баз в консоли.