Ошибка в БД при обновлении (отказ в техподдержке)

Уважаемые модераторы!
Открываю тему на форуме, т.к. сотрудник тех.поддержки Иван Славный отказал в помощи при обращении на портал тех.поддержки.

Предыстория: обратился на портала с проблемой «Обновление заканчивается с ошибкой при обновлении базы данных» №LD-1214
1.jpg
Lers.UpdateService.log (841 KB)
На что получил ответ:
«У вас имеются ошибки в вашей БД MS SQL Server, которые не позволяют произвести обновление системы. Вам нужно решить данный вопрос с вашим системным администратором.
Вы можете воспользоваться официальной статьей How to troubleshoot Msg 605 with SQL Server производителя MS SQL Server компании Microsoft, посвященной решению данной ошибки.»

Отправил ему свой комментарий:
«Уважаемый Сотрудник техподдержки!
Нас не устраивает ответ на данное обращение!
База данных поставляется в пакете Вашей программы, настраивается только на работу с Вашей программой, у нас нет доступа к базе (ее структуре и таблицам) и нет специалистов по обслуживанию баз данных. Мы покупали лицензии и техподдержку за законченный программный продукт и отсылать нас на сторонние сайты таким образом считаю неэтичным.
Данная ошибка по обращению к базе данных у периодически выявляется уже давно причем в разных версиях программы и мы вынуждены постоянно откатывать из бэкапов полугодичной давности с потерей данных (вы можете посмотреть наши предыдущие обращения). Нас не устраивает такая работа программы.
Прошу оказать техподдержку в полной мере и выслать четкие инструкции по решению проблемы, в противном случае буду вынужден вынести проблему на форум и обратится к руководству ООО «ЛЭРС УЧЕТ» по поводу отказа в техподдержке.»

На что получил ответ:

«Я не отсылал вас на сторонний сайт. Присланная мною ссылка указывает на страницу производителя СУБД MS SQL Server, на основе которой работает ЛЭРС УЧЕТ, компании Microsoft, которая посвящена указанной вами ошибке.
Мы оказываем техническую поддержку по нашему ПО ЛЭРС УЧЕТ. Техническую поддержку по стороннему ПО, в том числе и СУБД MS SQL Server мы не оказываем. Мы можем подсказать возможные причины ошибки и способы устранения. Они приведены как раз в статье производителя СУБД, которую я привел ранее.
В полный установочный пакет действительно входит бесплатная версия СУБД Microsoft SQL Server 2008 R2 Express, но данное ПО не входит в состав ЛЭРС УЧЕТ и поддержка на него не распространяется. Полный установочный пакет сделан для удобства пользователей.»

Я не хочу давать моральную оценку действиям сотрудника техподдержки, пусть это делает руководство компании.
Просто хочу обратить внимание на следующие вещи:

  1. Компания которую я представляю является держателем коммерческих лицензий и ежегодно оплачивает техподдержку.
  2. Вы действительно считаете, что если СУБД MS SQL Server это стороннее ПО, то несмотря на то, что оно используется, настраивается и работает только с ПО ЛЭРС УЧЕТ, любые проблемы с MS SQL вас не касаются? Если это так, то пожалуйста пишите крупными буквами в руководстве пользователя, что для работы с ЛЭРС УЧЕТ необходимо держать в штате специалиста по реляционным базам данных. Как много у Вас будет желающих покупать лицензии в этом случае?
  3. Ссылка, которую дал сотрудник техподдержки во-первых ведет на сайт на иностранном языке, а во вторых для того чтобы воспользоваться рекомендациями сайта, необходимо обладать спец. знаниями в области обслуживания баз данных и, как я понял требует установки спец. ПО, поэтому данная информация мне никак помочь не может.

По-прежнему прошу четких инструкций для решения озвученной проблемы.

Да, MS SQL Server это стороннее ПО, на которое опирается в своей работе ЛЭРС УЧЁТ. Мы оказываем помощь по стороннему ПО по мере возможности, пока вопрос не выходит за рамки нашей компетенции. В вашем случае ситуация нестандартная, вызвана она не ошибками в работе ЛЭРС УЧЁТ.

Эксплуатацию любого серверного ПО подразумевает наличие специальных знаний. Мы стараемся сделать всё, чтобы пользователям не требовалось глубоко погружаться в администрирование компьютера, но в некоторых случаях этого недостаточно. Повторюсь, у вас нестандартная проблема, не связанная с ошибками в ЛЭРС УЧЁТ. Подавляющее большинство наших пользователей никогда с такими проблемами не сталкивались.

Из ваших сообщений я вижу, что проблема у вас, скорее всего, даже не связана с SQL-сервером. Подобные ошибки в 95% случаев указывают на аппаратные сбои. Чаще всего это проблема с жёстким диском. Из-за этого внутренняя структура БД повреждается, а восстановление из бэкапа помогает, но только до очередного сбоя.

Соответственно, начать нужно с обеспечения бесперебойной работы системы.

  1. Установить ИБП на серверный компьютер.
  2. Проверить жёсткий диск, на котором установлена БД ЛЭРС УЧЁТ, утилитой CHKDSK. Для профилактики стоит его заменить. ЛЭРС УЧЁТ записывает данные в БД очень активно. Если диск даёт даже очень редкие сбои, этого будет достаточно для того чтобы разрушить базу.
  1. ИБП стоит и система питания у нас надежная.
  2. Жесткий диск - RAID (зеркало), которое регулярно проверяется и CHKDSK и другими сторонними утилитами (последняя проверка Викторией два месяца назад проблем с ЖД не выявила).

Разговаривал с нашими 1с-никами. У них ошибки SQL-сервера это рядовой случай, независимо от того, чем они вызваны – аппаратными или программными сбоями. Устранение таких ошибок – часть их работы и методы – это не только восстановление из бэкапов, но и переиндексирование и восстановление отдельных таблиц и много еще чего. Но их этому учат, и есть вся необходимая документация от 1с и структура БД открыта для редактирования.
А в случае с ЛЭРС – закрытая структура БД + отсутствие каких-либо инструкций от разработчика на такие случаи.
Может быть Вам стоит предусмотреть в ЛЭРС процедуру проверки БД на целостность (автоматически, вручную, при резервном копировании или еще как-то), а иначе какой смысл в автоматическом резервном копировании БД? Каждую неделю делать резервную копию, что бы потом узнать, что все резервные копии БД за последние полгода битые и их можно спокойно удалять и данные потеряны?

Странная ситуация. Например БД нашего предприятия работает без сбоев уже больше 14 лет, как и базы 1С. Все таки очень похоже именно на аппаратные сбои.

Предложение по периодической проверке БД интересное. Это редко требуется, но действительно может застраховать от сбоев в резервных копиях. Мы обязательно обсудим такую функцию.
Добавлю что для систем где критически важна работоспособность мы рекомендуем использовать коммерческие версии SQL server. Планы резервного копирования в нем гораздо функциональнее и мощнее реализованных у нас.

В защиту тех.персонала ЛЭРС Учет скажу:
ЛЭРС Учет не несет никакой ответственности за работу MS SQL Server как сторонней СУБД, так как являясь держателем коммерческих лицензий и оплачивая техподдержку, вы получили неисключительное право на использование только ПО ЛЭРС Учет, а MS SQL Server является продуктом Microsoft, так же требует коммерческого лицензирования и вся тех поддержка оказывается сотрудниками MS, что Вам и предложили сделать. И да, нужно держать в штате специалиста по СУБД, это нормальная практика в России, ЕС и США на предприятиях.
На моей памяти возможны ошибки, связанные с запросами к БД, некие иные моменты в работе связки ЛЭРС Учет и MS SQL Server, но технический персонал ХЦЭС оперативно исправляет и выпускает обновления.

Попробуйте отключить RAID, перенесите вашу БД, журналы и файлы temp на 1 диск (желательно разные разделы жесткого). Я лично использую для хранения БД 1 SSD диск (что кстати является рекомендацией самого Microsoft) в течение последних 6 лет как он работает никогда не было проблем.

PS: Не стоит доверять программному RAID, многие проблемы и ошибки возникают из за него + hdd диски

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

Дмитрий48, в каком состоянии сейчас находится ваша система? Есть ли у вас резервная копия базы данных? Пробовали ли вы выполнить инструкции из статьи, ссылку на которую вам предоставила тех. поддержка, или вам нужны пошаговые инструкции на русском?

P.S. Если в сервере установлен RAID-контроллер с кеш-памятью, то в первую очередь я бы проверил/заменил эту память. Также возможно, что у RAID-контроллера установлен Battery Backup Unit, т.е. батарейка, которая поддерживает данные в памяти контроллера при сбоях питания. Если такая батарейка присутствует - проверьте ее напряжение, если оно ниже номинального, контроллер может терять данные, что приведет к повреждению структуры базы данных.

Поставил SQL Server Management Studio и выполнил DBCC CHECKDB, обнаружилось порядка 20 ошибок, выполнил
ALTER DATABASE MyDataBase SET SINGLE_USER
GO
DBCC CHECKDB(‘MyDataBase’, REPAIR_REBUILD)
GO
Все ошибки были исправлены. ЛЭРС УЧЕТ успешно обновился.
Все оказалось довольно просто, но пришлось потратить время на поиск инструкций в интернете.

Конечно хотелось бы, чтобы для пользователей вроде меня были хотя бы инструкции по периодической проверке баз данных или данные процедуры были реализованы через ЛЭРС, т.к все копии баз с 2015г оказались битыми.
И ведь система обновлялась до данного момента? Ничего не говорило об ошибках в БД.

Послежу за БД, если ошибки будут возникать и далее, буду разбирать рейд.

Спасибо за поддержку.

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

В версии R29 в утилиту восстановления БД будет добавлена возможность запустить проверку БД и получить отчёт об обнаруженных ошибках.