Восстановление работоспособности SQL базы «1С предприятие 8» после падения во время обновления

Приветствую Вас, дорогие читатели.

Совсем недавно мне пришлось восстанавливать базу «1С предприятие 8» после падения, которое произошло во время обновления конфигурации. Причем это было дважды и методы примененные при восстановлении тоже были разными (скоро узнаете почему). В данной статье я хочу рассказать о тех способах, которыми я воспользовался.

Все способы рассматриваемые в статье относятся к серверному варианту работу «1С предприятие 8», используемое СУБД — MS SQL 2005.

Случай №1.

При обновлении конфигурации была выдана ошибка «Конфликт блокировок», конфигуратор был закрыт. При повторной попытке входа в конфигуратор появилась ошибка: Внимание!!! При обновлении данных, после последней реструктуризации, произошла ошибка. Повторить обновление?» «Да, Нет»

Ошибка №1 после обновления

При положительном ответе выдавалось следующее сообщение «Обнаружена незавершенная операция сохранения конфигурации. Для продолжения работы необходимо завершить операцию.»

Ошибка №2 после обновления

Поиски на просторах интернета выдали следующий способ. В таблице Config нашей базы данные необходимо удалить строки где поле FileName = commit или FileName = dbStruFinal или FileName=DynamicallyUpdated (для 8.3) или FileName=dynamicCommit (8.3), а также очистить таблицу ConfigSave. Поясню за что отвечают данные таблицы: Config — в данной таблице хранится конфигурация базы данных, ConfigSave — в данной таблице хранится рабочая конфигурация, т.е. до нажатия кнопки F7 в конфигураторе.

Открываем SQL Serger Managment Studio и открываем окно запросов по кнопке «New Query» открывает окно запросов.

Открыть окно запросов

В окне запросов пишем запросы и выполняем их:

  1. delete from [ИмяНашейБазы].[dbo].[Config] where FileName = ‘commit’
  2. delete from [ИмяНашейБазы].[dbo].[Config] where FileName = ‘dbStruFinal’
  3. delete from [ИмяНашейБазы].[dbo].[Config] where FileName = ‘DynamicallyUpdated’ (для версии 8.3)
  4. delete from [ИмяНашейБазы].[dbo].[Config] where FileName = ‘dynamicCommit’ (для версии 8.3)
  5. delete from [ИмяНашейБазы].[dbo].[ConfigSave] 

После выполнения данных запросов, конфигуратор запустился без проблем.

Случай №2

Причина ошибки входа в конфигуратор такая же как и в первом случае: конфликт блокировок при обновлении конфигурации.

Удаление строк в таблице Config и очистка таблицы ConfigSave помогло частично: конфигуратор открывался, но в предприятии не работали управляемые формы.

В данном случае приходило в голову 2 пути развития:

  1. Восстановление из архива. В данном варианте было одно большое  «НО»: так получилось что архив создался уже после обновления, т.е. архив был с ошибкой.
  2. Была идея использовать конфигурацию распределенной базы, которая не обновилась, потому что файл для обмена был с ошибкой.

Для решения проблемы был выбран 2-ой вариант. Далее пошагово расскажу что делал.

  1. Открываем SQL Serger Managment Studio и создаем произвольную базу, например Perenos. В этой базе создаем таблицу Config. Кто не знает sql для переноса данных из одной таблицы в другую, то у MS SQL есть замечательный сервис «SQL Server import and Export Wizard«. С помощью данного сервиса можно легко переносить данные из одной базу в другую. Чтобы запустить данный сервис необходимо нажать клавиши «ctrl+r» и в окне диалога написать команду «dtswizard«.
  2. Переносим с помощью сервиса dtswizard данные таблицы Config нашей базы в таблицу Config базы Perenos.
  3. Очищаем таблицу Config в нашей базе с помощью запроса delete from [ИмяНашейБазы].[dbo].[Config]
  4. На сервере, где находится распределенная база запускаем сервис dtswizard и переносим данные из таблицы Config в такую же таблицу только в нашей базе.

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

Популярность: 12%

Запись опубликована в рубрике Настройка и оптимизация с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *