Обработка на Инфостарте · 10 SM
Повреждение базы 1С на MS SQL: что задето и что поднимать из бэкапа
Вывод CHECKDB говорит о таблицах, страницах и индексах и на любую ошибку советует repair_allow_data_loss. Обработка называет объект 1С на каждой битой странице, красит вердикт и по сверке с копией из бэкапа даёт список пропавших документов с номерами и датами.
Обработка продаётся на Инфостарте за 10 SM. Управляемые формы, любая конфигурация, проверена на платформе 8.3.27. Только клиент-серверные базы на MS SQL. К SQL Server не подключается, базу не исправляет и в неё не пишет.
Решение "поднимать всю базу на вчера или несколько документов" обычно принимают по рекомендации в конце вывода CHECKDB. А она одна и та же для битого индекса, где строк 1С нет, и для потерянных шапок документов. На стенде из четырёх испорченных страниц копия из бэкапа понадобилась для двух.
Различает их пара полей каждого сообщения: служебное имя таблицы и номер индекса. Имя таблицы в объект метаданных переводит сама платформа функцией ПолучитьСтруктуруХраненияБазыДанных, а назначение таблицы (основная, табличная часть, итоги, регистрация изменений) уже говорит, чего стоит потеря. Обработка делает этот разбор по вставленному тексту проверки.
Список конкретных документов она собирает без доступа к SQL Server: слепок рабочей базы после исправления, такой же слепок копии из бэкапа, сравнение двух файлов. Всё запросами 1С.
Что делает
Читает вывод CHECKDB как есть
Текст вкладки "Сообщения" на русском или английском, вывод командной строки, табличный результат. Вставить в поле или открыть файлом в UTF-16, UTF-8, windows-1251 или cp866.
Называет объект 1С
Документ, его табличную часть, регистр, итоги, регистрацию изменений, индекс. Перевод делает платформа, поэтому работает в любой конфигурации.
Ставит вердикт
Зелёный "Данные целы", жёлтый "Восстановимо без бэкапа", красный "Нужен бэкап", серый "Разобрать вручную". Сверху крупная строка итога по всей базе.
Сверка с копией из бэкапа
Слепок рабочей базы, слепок копии, сравнение. По каждому документу видно, пропал он целиком, не хватает строк табличной части или пропали движения. Идёт порциями по месяцам.
План восстановления и Markdown
Шаги средствами 1С и код для консоли, который собирает ссылки на потерянные документы по идентификаторам. Выгрузка одним файлом без паролей, чтобы отдать коллеге или нейросети.
Как обработка красит битую страницу
Вердикт ставится по виду таблицы, на которой лежит страница. Номер индекса больше единицы всегда зелёный: там копия полей для поиска, строк объекта нет.
| Вердикт | Когда и что делать |
|---|---|
| Данные целы | Испорчен некластерный индекс. Его отключают и строят заново из таблицы, строки не теряются. |
| Восстановимо без бэкапа | Движения регистров, итоги, регистрация изменений, настройки. Движения возвращает перепроведение, итоги пересчёт, регистрацию изменений повторная регистрация для узла. |
| Нужен бэкап | Шапки документов и справочников, табличные части, независимые регистры сведений, константы. Пересчитать не из чего, объекты возвращают из копии по списку сверки. |
| Разобрать вручную | Служебные таблицы, по которым вердикт зависит от содержимого, и таблицы, где платформа хранит конфигурацию. |
Что показал прогон на стенде
Копия пустой типовой УТ для Казахстана 3.4, MS SQL 2022, платформа 8.3.27. Синтетика: 3 000 реализаций и 1 500 приобретений с табличной частью "Товары" и движениями по регистру "Товары на складах". Испорчены четыре страницы, каждая отдельно и все сразу; что лежало на каждой до порчи, записано заранее.
| Показатель | Значение | Как надо | Вердикт | Что это значит |
|---|---|---|---|---|
| Страница индекса по дате документа | "Данные целы" | зелёный | норма | CHECKDB советовал repair_allow_data_loss; после отключения и перестроения в индексе и таблице по 3 000 строк |
| Страница регистра "Товары на складах" | "Восстановимо без бэкапа" | жёлтый | норма | 44 движения у 10 документов, восьми реализаций и двух приобретений |
| Страница шапок "Реализация товаров и услуг" | "Нужен бэкап" | красный | чинить | сверка назвала 9 документов, потерянных целиком |
| Страница табличной части "Товары" | "Нужен бэкап" | красный | чинить | сверка назвала 19 строк у 5 документов |
| Сверка с копией против списка до порчи | совпала | совпасть | норма | 9 документов целиком, 19 строк табличной части у 5, 44 движения у 10 |
| Время слепка задетых объектов | 0,7 с | - | инфо | документ и регистр, 10 499 строк слепка, на сервере; сравнение 1,2-1,4 с |
Разбор результата
Строка, которую стоит увидеть до любого исправления: после штатного исправления сервера баз данных у девяти удалённых документов остались их собственные строки табличной части и движения на целых страницах, 41 и 41. Повторный CHECKDB чистый, база открывается, а остатки на складе считаются по документам, которых нет. Сверка с копией показывает такие хвосты вместе с потерянными документами.
Как пройти аварию с обработкой
- 01
Сохранить вывод и бэкап как есть
Текст CHECKDB целиком в файл и полный бэкап базы с повреждением, до любого исправления.
- 02
Разобрать вывод
Открыть обработку в рабочей базе, вставить вывод, нажать "Разобрать". Итог сверху говорит, нужен ли бэкап вообще.
- 03
Снять слепок рабочей базы
После того как администратор убрал битые страницы и база открывается: закладка сверки, объекты с красным и жёлтым вердиктом, кнопка слепка. Слепок сохраняется файлом.
- 04
Сравнить в копии из бэкапа
Последний бэкап до сбоя поднять отдельной базой, открыть в ней ту же обработку и указать файл слепка. Отчёт называет документы и даёт план: что перенести из копии, что перепровести.
Не получается самим? Напишите, разберёмся
Настроим регламентное обслуживание так, чтобы база работала стабильно, бэкапы гарантированно восстанавливались, а диски не кончались внезапно.
- Стоимость
- 450 000 - 600 000 ₸ТЗ и разовая наладка, без налогов; сопровождение - от 150 000 ₸/мес отдельно
Разборы по теме
Рядом по теме
CHECKDB нашёл ошибки в базе 1С: порядок действий
Разбор по шагам: что не делать до REPAIR, как перестроить битый индекс, SQL для списка документов по соседним страницам.
Чек-ап СУБД под 1С
Правильно ли база стоит на сервере: вердикт по каждому пункту и история бэкапов, без которой копию для сверки не поднять.
Чек-ап чистоты базы 1С
Битые ссылки на несуществующие объекты поимённо: полезно после возврата документов из копии.
Частые вопросы
CHECKDB написал repair_allow_data_loss. Данные точно потеряны?
Нет. Эту рекомендацию CHECKDB пишет и когда испорчен только некластерный индекс, где строк объекта нет. Обработка отделяет такие страницы зелёным вердиктом, индекс перестраивается без потерь.
Какие права нужны?
Прав на SQL Server никаких: обработка к нему не подключается. В 1С проще запускать под пользователем с полными правами: структуру хранения платформа отдаёт для административных действий, а слепок читает все задетые объекты в обеих базах.
Файловая база или PostgreSQL подойдут?
Нет, только клиент-серверные базы на MS SQL. Для файловой базы есть отдельные средства, PostgreSQL в первой версии нет.
Насколько точен список сверки?
Он называет то, что пропало относительно бэкапа. На стенде совпал со списком, снятым до порчи. Документ, введённый после бэкапа и потерянный на битой странице, сверка не увидит: в копии его нет. А документы, законно удалённые или перепроведённые после бэкапа, попадут в список, поэтому его сверяют по датам.
Почему слепок падает с ошибкой про рабочий сервер?
Слепок пишется во временный каталог рабочего процесса сервера 1С. Если рабочих серверов в кластере несколько и вызов ушёл на другой, обработка пишет об этом понятной ошибкой. Тогда слепок снимают при одном рабочем сервере.
Работает на БП, ЗУП, ERP?
Перевод таблиц в объекты и сверка платформенные и от конфигурации не зависят. Сам прогон делался на Управлении торговлей для Казахстана 3.4.
Бесплатный экспресс-аудит вашей 1С
За 1-2 дня посмотрим вашу базу, найдём, где теряется производительность, и скажем, что с этим делать. Без обязательств.
Обсудим задачу
Быстрее всего в WhatsApp: напишите пару строк о задаче, ответим в течение рабочего дня.