gifts2017

Варианты решения "Нарушена целостность структуры конфигурации" для SQL или в ожидании релиза 8.2.12.92

Опубликовал Dmitiry (ndacoder) в раздел Администрирование - Тестирование и исправление

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

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

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

Нарушена целостность структуры конфигурации

и происходит аварийное завершение работы программы.
1С предлагала способ обхода:
Не использовать динамическое обновление.

А что делать тем кто поймал ошибку например в конце рабочего дня. востанавливать вчерашний бэкап ? или приступить к танцам с бубном.

Немного теории конифигурация базы данных хранится в таблице Config, отличия редактируемой базы в таблице ConfigSave. Соответтсвие объектов метаданных можно провести по колонке FileName, в колонке BinaryData хранится запакованные данные - описание метаданных. Если таблица заполнена то но состоит минимум из 3х элементов c значениями в колонке FileName. "version" - версия платформы "versions" здесь в запаковонном виде перечисленны все метаданные в виде {1,N,"filename1",uid1, ... "filenameN",uidN} где N - количество объектов метаданных описанных в файле "versions", "filenameN" - имя файла,uidN - уникальный ID - при изменени объекта метаданных гененерится новый.

Обычно при такой ошибки данные не разрушены, а разрушенна только конфигурация.

конфигурация может быть разрушена поразному восновном это проблема "versions", также частая проблема с отчетами построенными на основе компоновки данных.

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

Перенос конфигурация для SQL 2005 описан-> http://www.infostart.ru/public/17185/

Выгрузка конфигурации для DB2 http://infostart.ru/public/78378/

Выгрузка конфигурации для MS SQL http://infostart.ru/public/85275/

Перед всеми действиями делаем бэкап средствами sql базы данных.

И начинаем танцы с бумном.

проверяем наличие записей в таблице ConfigSave

SELECT * FROM ConfigSave если что есть то нужно почистить

Delete FROM ConfigSave

если были записи то можно попробовать зайти в конфигуратор.

можно попробовать руками собрать таблицу по рекомендациям

http://infostart.ru/public/76626/

в случае хранения базы в MS SQL можно попробовать востановить конфигураци с помощью EI.

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

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

PS

пример ошибки когда база открывается в режиме конфигуратора но при открытии в режиме предприятия выдаёт ошибка типа "тип bf3eefc5-26ac-4bb2-bec0-33a82e49a0c5 не найден"

вариант лечения создать для пользователя новый интерфес.

FAQ для DB2

создание таблицы conf - копии разрушенной config

CREATE TABLE "DB2ADMIN".conf (
  FILENAME    VARGRAPHIC(128)    NOT NULL,
  FILENAMEU    VARGRAPHIC(128)    NOT NULL    GENERATED ALWAYS AS (UCASE(FILENAME)),
  CREATION    TIMESTAMP    NOT NULL,
  MODIFIED    TIMESTAMP    NOT NULL,
  ATTRIBUTES    SMALLINT    NOT NULL,
  DATASIZE    INTEGER    NOT NULL,
  BINARYDATA    BLOB(1073741823)    NOT NULL    LOGGED    NOT COMPACT
)
  IN "V81C_LARGESPACE"
  INDEX IN "V81C_INDEXSPACE"
  LONG IN "V81C_LOBSPACE";

ALTER TABLE "DB2ADMIN".conf
  DATA CAPTURE NONE
  LOCKSIZE ROW
  APPEND OFF
  NOT VOLATILE;

COMMIT;

RUNSTATS ON TABLE "DB2ADMIN".conf
  ALLOW WRITE ACCESS;

SET SCHEMA = DB2ADMIN;

COMMIT;

Перенос данных таблицы conf - копии разрушенной config

                Insert INTO DB2ADMIN.conf(FILENAME,
                       CREATION,
                       MODIFIED,
                       ATTRIBUTES,
                       DATASIZE,
                       BINARYDATA)
                Select FILENAME,
                       CREATION,
                       MODIFIED,
                       ATTRIBUTES,
                       DATASIZE,
                       BINARYDATA
                FROM  DB2ADMIN.config

наличие такой таблички не помешает работоспособности 1с, зато позволит заменять отдельные

записи в таблице конфигурации

PS если кому интересно есть обработка которая может записать правильный файл version для произвольной конфигурации в файл cf ( правда только в файловом режиме но его можно загрузить в cql базу)

 

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Александр Зубцов (iov) 17.10.10 23:11
Ммммм.... Представим себе ситуацию когда ВЫ покупаете инструмент для работы а он сам ломается... Вы его меняете на другой... Ах как хорошо быть монополистом...
2. Алекс (Alef) 18.10.10 08:36
Варианты есть? В ту же цену?
3. Dmitiry (ndacoder) 18.10.10 12:57
Если не спешить менять релизы, то можно вполне работать с 1с, 8.2.11 последней сборки довольно стабильно работает последняя сборка 8.2.12.92 тоже меня пока устраивает
4. Сергей Космачев (ksnik) 13.03.13 08:51
На 8.2 целостность конфигурации на MSSQL за год нарушалась дважды по причине динамического и нединамического обновления с использованием хранилища конфигурации, это зарегистрированный баг http://gilev.blogspot.ru/2010/10/82128.html
Этот баг не исправляет фирма 1С, пользователи выкручиваются сами. В моем случае дважды помогал метод востановить базу простой заменой таблицы Config на такую же таблицу аналогичной базы на распределенке.
Как вариант - тестовая база, подключенная к хранилищу.
5. Юрий Пысларь (DirectAuto) 03.05.13 17:24
Симптомы: "Нарушена целостность структуры конфигурации". Конфигуратор + приложение;

Лечение:
____________________________________________________

1) Диск: Проверяем наличие последнего DT;
2) Диск: Проверяем наличие последнего СF рабочей базы;

3) 1С Конфигуратор: В базу SQL "копия-рабочей" заливаем все данные из DT + накатываем последний CF рабочей базы;

4) 1С Предприятие: проверяем работоспособность залитой базы путём запуска в режиме Предприятие;

5) Выходим из конфигуратора и всех запущенных 1С ;

6) ЗАПУСКАЕМ ЛЮДЕЙ В КОПИЮ ДЛЯ ВОЗМОЖНОСТИ РАБОТЫ ХОТЯ БЫ С ПРИМЕРНЫМИ ДАННЫМИ; (если уж очень горит чёто там посмотреть)

7) MS SQL Management Studio: открываем базу "типа_рабочая" и выбираем

типа_рабочая / Таблицы / dbo.Config (клик правой кнопкой мышки)

Создать сценарий для таблицы / Используя DELETE / Новое окно редактора запросов

убираем из запроса строку: WHERE <Условия поиска,,>, т.е. получаем запрос DELETE FROM [directauto].[dbo].[Config] GOнажимаем кнопку [!Выполнить]

Убеждаемся, что строки таблицы очищены с помощью запроса: SELECT * FROM [рабочая].[dbo].[Config]

8) Запускаем утилиту "C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTSWizard.exe" (копирование таблиц между базами (во как !)

Окно приветствия = Далее /
Выбор источника = SQL Server Native Client 10.0 + Использовать проверку подлинности SQL Server + ** + ****** + копия-рабочей /
Выбор Приемника = SQL Server Native Client 10.0 + Использовать проверку подлинности SQL Server + ** + ****** + типа-рабочая /
Скопировать данные таблиц или представлений /
отмечаем таблицы [dbo].[Config] + [dbo].[ConfigSave] /
"Запустить немедленно" + {Готово}

На выходе не должно быть ошибочных записей в логе выполнения!

9) Запускаем основную рабочую базу и наслаждаемся работой системы; ЗАПУСКАЕМ ПОЛЬЗОВАТЕЛЕЙ В РАБОЧУЮ БАЗУ

10) По окончании рабочего дня, выпровадживаем всех пользователей, закрываем крепко входную дверь и начинаем копать 1С ногами :)

10.1. Резервный бэкап DT + Cf текущей рабочей базы;
10.2. Конфигуратор / Администрирование / Тестирование и исправление;
10.3. Выгрузить информационную базу;
10.4. Загрузить информационную базу (с удалением всех данных);
10.5. Контрольный бэкап в DT;

11) Проверяем работоспособность, выключаем комп и идём обмывать очередные "заслуги перед отечеством";
DimaP; alek-sand-er; NewLifeMan; +3 Ответить 1
6. Александр Губанов (gubanoff) 30.08.13 16:31
(5)Спасибо за подробный рецепт, мне помог в похожей ситуации!