Каталог решений - Неубиваемая база 1С:Предприятие 7.7 (SQL) на распределенке (УРБД)

Неубиваемая база 1С:Предприятие 7.7 (SQL) на распределенке (УРБД)

Неубиваемая база 1С:Предприятие 7.7 (SQL) на распределенке (УРБД)

В наличии

Данная статья актуальна для программистов и администраторов SQL-версии 1С:Предприятия 7.7 с УРБД. Если использовать 1С: Предприятие 7.7 (SQL) достаточно интенсивно, может происходить поломка (разъехались остатки, обрушились индекы, перестали проводиться документы из-за ошибок SQL и т.д.., в общем база «накрылась»). Можно проводить проверку, переиндексацию базы на SQL Server, мараковать с объектами 1С, копировать и удалять объекты, использовать всякие выгрузки-загрузки, но все это совсем не айс. Когда обмены в распределенной базе данных 1С Предприятия 7.7 выполняются достаточно интенсивно, решить проблему можно универсальным способом без плясок с бубном с помощью УРБД за 10-20-30 минут.

Когда не помогает DBCC DBREINDEX («RA4674»)…
Violation of primary key constraint ‘PK_RA4674’. Cannot insert duplicate key in object

Категория:

Описание

Эта статья для администраторов и программистов 1С, если Вы не имеете достаточных знаний и полномочий, выполнять эти манипуляции на реальных данных нельзя (пока не научитесь).

Статья описывает порядок восстановления периферийных и центральных баз УРБД (в обмене участвуют все объекты, компонента "Расчет" не используется).

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

 Как восстановить работоспособность информационной базы 1С:Предприятие 7.7 (SQL) на распределенке (УРБД)? Используем следующей рецепт (Windows Server 2003 + MS SQL 7), в случае файловой базы можно опустить шаг 5:

1) Пользователям периферийной базы отправляем команду Пуск — Выполнить -> net send * за 10 минут до начала операций "через 10 минут всем выйти из 1С7.7!" Начинаем в конфигураторе выполнять обмен. Для тех, кто не в курсе как это делается — пример порядка ручного обмена в УРБД.

2) В конфигураторе центральной базы выполняем автообмен (выгрузку из центральной базы в периферийные базы). Для этого в
центральной базе устанавливаем флажки (выгрузка "префикс периферийной базы ПБ").

3) Повторное сообщение net send "Всем выйти из 1С7.7!" Если закрывашка встроенна в базу, воспользуемся ей.

4) Выгоняем всех пользователей из периферийной базы. Закрываем на сервере открытые файлы периферийной базы: Пуск — Мой компьютер — Управление — Общие папки — Открытые файлы — контекстное меню — все задачи — закрыть открытый файл. Желательно выгонять пользователей не в одиночку, ато если они успеют "пролезать" в базу sql тогда мароки по их выгону гораздо больше.

5) Удаляем сеансы периферийной базы на сервере SQL — в Query Analyzer хранимой процедурой sp_who смотрим кто в базе, в дальних колонках написано название базы, и на всех жертвах, кто остался в нашей периферийной базе выполняем команду "kill НомерПроцесса".

6) Иногда (после длительной яростной "зомби-фермы" с пользователями с многократным глубоким проникновением в 1С и выкидыванием) базу данных для обмена открыть невозможно. Файлы закрыты, процесса на SQL сервере нет, а в мониторе пользователь висит. В этом случае удаляем из временные файлы из профиля пользователя и вре менные файлы 1С из общего профиля. Неисключено, что прийдется перезагружать сервер 1С.

//Если бы мы просто выполняли обмен, а не восстановление периферийной базы, то порядок действий был бы следующий. В
//периферийной базе выполняем обмен — загрузку из центральной в периферийную и выгрузка из периферийной в центральную
//(для этого запускаем в конфигураторе периферийной базы автообмен и устанавливаем флажки загрузка ЦБ и выгрузка ЦБ, где
//ЦБ — префикс центральной базы). Пишем пользователям периферийной базы сообщение "можно работать в 1С". Вместо этого делаем следующее:
7) В поломанной периферийной базе выполняем обмен — выгрузка из периферийной в центральную (для этого запускаем в конфигураторе периферийной базы автообмен и устанавливаем флажок выгрузка в ЦБ).

8) Для всех периферийных баз, где не нужно восстанавливать бекап, выполняем загрузку из центральной и выгрузку в центральную.

9) В центральной выполняем обмен — загрузку из периферийной базы в центральную (загрузка ПБ) для всех периферийных баз.

10) Средствами SQL Server делаем бекап центральной базы и загружаем его в ту периферийную, которая не работает. В центральной базе предварительно стоит обрезать журнал регистрации SQL (сделать shrink) потому что он тоже размножится по периферийным базам когда мы загрузим в них Бекап. Шринк делается как написано в отдельной статье //sale.itcity.ru/public/168314/

11) Удаляем в новой периферийной базе таблицы 1SDWNLDS, 1SUPDTS, CJ7287, CJ7289. Таблицы CJ7287, CJ7289 относятся к компоненте "Расчет" и способ их преобразования при замене периферийной базы централкой мне не известен, но заменить их из бекапа не удается, в центральной базе они бывает портятся (нарушена структура индексов CJ7287, CJ7289 и центральная база без монопольного режима не стартует) .

12) В таблице _1SDBSET есть поле DBSTATUS, оно может принимать следующие значения: P — Центральная M — Текущая N — Периферийная (непроинициирована) C — Периферийная. Редактируем таблицу в новой периферийной базе 1SDBSET, удаляем в ней все строчки кроме строчки данной периферийной ПБ и центральной ЦБ базы. В оставшихся двух строчках меняем статусы, в колонке DBSTATUS переназываем, меняем местами значения полей M и P.

13) В новой периферийной базе в таблице _1ssystem меняем префикс центральной ЦБ на префикс периферийной ПБ.

14) В новой периферийной базе в конфигураторе прописываем соединение с SQL базой.

15) Актуализируем оперативные итоги в периферийной базе (Управление оперативными итогами — делаем расчет оперативных итогов) и последние документы из последовательностей проводим текущей датой.

16) В режиме 1С: Предприятия устанавливаем константу "Префикс информационной базы Для УРИБ "ПБ"

17) Все, пишем пользователям периферийной базы сообщение "можно работать в 1С". После того, как научились выполнять такое восстановление периферийной базы, особенно если периферийных баз несколько, можно больше не делать ежедневные бекапы.

Техническое описание механизмов УРБД изложено в статьях
http://kb.mista.ru/article.php?id=20
http://kb.mista.ru/article.php?id=45&
http://argat.h11.ru/URBDStructure.html
http://1c.proclub.ru/modules/newbb/viewtopic.php?topic_id=258258&forum=2&viewmode=flat&order=ASC&start=all

Альтернативный метод "обрезки" ("свертки") базы 1С.77 на конкретную дату через УРБД
//sale.itcity.ru/public/17072/

Плагин для лечения выгрузки и загрузки больших баз в 1С 7.7
//sale.itcity.ru/public/15364/

Быстрый метод создания периферийной базы УРБД (скрипт SQL)
//sale.itcity.ru/public/92564/ 

has been added to your cart:
Оформление заказа