Ошибка в базе. Ошибка в таблице Config. #625318


#0 by FoXSkr
Доброго времени суток. На одной базе выявилась ошибка, при открытии конфигурации в конфигураторе. Выходит ошибка «Нарушена целостность в структуре конфигурации» и две кнопки «Завершить работу, Перезапустить». В остальном, база работает нормально – предприятие запускается, база работает, ошибок не выдает. Тестирование и исправление не помогает, chdbfl тоже ничего не находит. Выгрузка информационной базы тоже проходит без проблем, и дальнейшая ее загрузка, но это проблему не решает. При попытки загрузить эту базу на SQL, SQL мне сообщает в чем проблема, что в таблице Config есть не уникальные индексируемые поля (уникальные идентификаторы), и даже указал какое именно значение не уникально. Открыл базу с помощью Tool_1CD, и убедился что действительно в этой таблице есть два одинаковых значения. А вот как исправить это поле я никак не могу найти инфы. А самое главное как правильно исправить что бы ничего не слетело . И неплохо было бы вообще знать что находится в этой таблицы.
#1 by shuhard
[И неплохо было бы вообще знать что находится в этой таблицы] тебя точно будет очень плохо, в Config находится конфигурация
#2 by Живой Ископаемый
в этой таблицЫ находится конфигурация.. Можно сохранить ее где-то в сторонке и удалить одну из дублирующих записей средствами СКЛ
#3 by FoXSkr
А как мне подгрузить ее в SQL, стандартными средствами она не загружается.
#4 by shuhard
начни с простого извлеки конфигурацию (cf) c помощью 1CD Tools и загрузи конфигурацию в пустую базу после чего через xml перекинь в неё данные
#5 by Живой Ископаемый
2 а... так у тебя база файловая... тогда наверное уже все
#6 by andrewks
а в ConfigSave всё пучком? так, может, обновить конфу БД на редактируемую?
#7 by shuhard
+ 1 может командную строку получиться
#8 by FoXSkr
СПС. Да этот вариант я храню в запасе, если ничего не получится, то так и сделаю. Но проблема интересная, не часто с ней сталкиваюсь, хотелось бы добить другим способом. Точно не знаю. На эту таблицу SQL не ругался. Из доступных действий в конфигураторе у меня есть "Открыть конфигурацию" - приводит к ошибке. "Сохранить конфигурацию БД в файл", "Сравнить конфигурацию", тоже приводит к ошибке. Или как то еще можно?
#9 by FoXSkr
А интересно я могу таблицы SQL заполнять через xml?
#10 by zva
Конфигурация измененная? Бэкап с живой конфой есть?
#11 by МихаилМ
понять какой объект метаданных можно просмотрев запись через  Tool_1CD. спасибо авторам Tool_1CD и DT:менеджер
#12 by FoXSkr
Сейчас конфа уже стандартная. Бекап есть перед последним обновлением (от мая месяца)
#13 by Пеппи
часто же вы бекапы делаете )
#14 by zva
ну делайте чистую базу со стандартной конфой и перегружайте через xml
#15 by dmpl
А тут частота не поможет. Если 3 месяца не замечали ошибку - то во всех бэкапах эта ошибка уже будет, и они, по сути, бесполезны.
#16 by FoXSkr
Мне то все равно, база не моя, я перед тем как прикосаться к базе всегда делаю бекап, в последний раз это было в мае, как то давно предлагал Хранитель, они чето зажмотились, так что пускай пожимают свои плоды. Но смыл не в этом, даже бы если я бы бекап делал каждый день, их бы это все равно не спасло, потому что база то работает, проблема случилось при последнем обновлении (это было в мае), а вот следующее обновление я уже не могу сдделать (конфа не открывается).
#17 by dmpl
Запуск с ключом /CheckConfig -ConfigLogIntegrity не помогает?
#18 by FoXSkr
В теме, ссылку которой вы дали, вы предлогали отключить индекс в ddl тригере. Подскажите пожалуйста более подробнее как это сделать..
#19 by МихаилМ
код за Вас писать не буду. пошагово расскажу. для восстановления работоспособности нужно 1) сделать возможным закрузить таблицу config (с помощью отсключения(удаления) индекса при создании если версия скл >=2005) ) 2) удалить запись с задвоенным PK или исправить PK на уникальный 3) восстановить индекс. 1) как создать триггер читайте на сайте MS если создаетсяф таблица такая-то то создать такуюже но без PK те тупо вставить в текст триггера проверку +  текст создания таблицы без PK скрипт создания таблицы и индекса можно сгенерировать в SSMS из таблицы config, которую создаст 1с при загрузке из dt файла и прервется на ошибке. потернируйтесь на пустой базе  создавая config исполнением скрипта, без загрузки из 1с.
#20 by FoXSkr
Чето я походу сдулся с этими триггерами. Не могу понять какое событие мне надо отловить (так как вы написали, кажется будет очень сложно для человека каторый может писать только примитивные запросы SQL). Я думал отловить событие при добавление строки, проверить содержимое колонки и (для начала отказаться от добавления), но и это оказалась сложной задачей для меня :( . В той же теме вы советовали использовать DtManager но она не хочет работать с 8.2 плаформой. А есть другая какая нибудь утилитка?
#21 by awa15
Если записи в CONFIG задвоились, надо удалить лишнюю запись (одну из двух). Чтобы удалить запись, надо: 1. Сделать копию файла 1CD! 2. В Tool_1CD включить в настройках отображение смещений в файле. 3. Посмотреть адрес (смещение) лишней записи. 4. Шестнадцатиричным редактором изменить по этому адресу один байт с 00 на 01. 5. Открыть базу в конфигураторе. Открыть ТиИ. 6. Поставить галочку (только одну!) на "Реиндексация таблиц". Выполнить ТиИ. 7. Поставить галочку (только одну!) на "Сжатие таблиц". Выполнить ТиИ. После этого можно пробовать открыть конфигурацию, выгружать в dt и т.д. Если это ошибка единственная, должно помочь, только, как правило, ошибки в одиночку не ходят.
#22 by МихаилМ
-- создание ddl триггера --- персоздания таблицы config без PK USE <ВАША_БАЗА>; GO IF EXISTS (SELECT * FROM sys.triggers    WHERE parent_class = 0 AND name = 'Config_no_PK') DROP TRIGGER Config_no_PK ON DATABASE ; GO CREATE TRIGGER Config_no_PK   --PRINT 'CREATE TABLE Issued.' /* DROP TRIGGER Config_no_PK /* ALTER TABLE [dbo].[Config] ADD PRIMARY KEY CLUSTERED ( GO */
#23 by FoXSkr
Спасибо ограменное.
#24 by FoXSkr
, К сожалению ничего не помогло. И в первом и во втором варианте результат один и тот же - "Конфигурация повреждена", только теперь дело не в уникальности строки.
#25 by МихаилМ
попробуйте удалить один из дублей или оба перед удалением сохраните дубли в отдельную таблицу
#26 by МихаилМ
попробуйте с помощью ms sql profiler отследить на какой записи в Config происходит ошибка и перенесите её в копию таблицы. а в конфиг удалите
#27 by FoXSkr
, Спасибо огромное, на досуге обязательно вернусь к этой проблеме. Но сейчас сроки уже поджимают, вопрос решил востановлением резервной копии и перенос данных до текущего дня с помощью обмена xml (P.S. Хорошо хоть она за эти 3 месяца не сильно много в прошлых годах ковырялась).
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С