![]() |
![]() |
|
Ошибка в базе. Ошибка в таблице Config. | ☑ | ||
---|---|---|---|---|
0
FoXSkr
16.08.12
✎
07:57
|
Доброго времени суток.
На одной базе выявилась ошибка, при открытии конфигурации в конфигураторе. Выходит ошибка «Нарушена целостность в структуре конфигурации» и две кнопки «Завершить работу, Перезапустить». В остальном, база работает нормально – предприятие запускается, база работает, ошибок не выдает. Тестирование и исправление не помогает, chdbfl тоже ничего не находит. Выгрузка информационной базы тоже проходит без проблем, и дальнейшая ее загрузка, но это проблему не решает. При попытки загрузить эту базу на SQL, SQL мне сообщает в чем проблема, что в таблице Config есть не уникальные индексируемые поля (уникальные идентификаторы), и даже указал какое именно значение не уникально. Открыл базу с помощью Tool_1CD, и убедился что действительно в этой таблице есть два одинаковых значения. А вот как исправить это поле я никак не могу найти инфы. А самое главное как правильно исправить что бы ничего не слетело . И неплохо было бы вообще знать что находится в этой таблицы. |
|||
1
shuhard
16.08.12
✎
08:00
|
(0)[И неплохо было бы вообще знать что находится в этой таблицы]
тебя точно будет очень плохо, в Config находится конфигурация |
|||
2
Живой Ископаемый
16.08.12
✎
08:00
|
в этой таблицЫ находится конфигурация.. Можно сохранить ее где-то в сторонке и удалить одну из дублирующих записей средствами СКЛ
|
|||
3
FoXSkr
16.08.12
✎
08:03
|
(2) А как мне подгрузить ее в SQL, стандартными средствами она не загружается.
|
|||
4
shuhard
16.08.12
✎
08:12
|
(3) начни с простого
извлеки конфигурацию (cf) c помощью 1CD Tools и загрузи конфигурацию в пустую базу после чего через xml перекинь в неё данные |
|||
5
Живой Ископаемый
16.08.12
✎
08:14
|
2(3) а... так у тебя база файловая...
тогда наверное уже все |
|||
6
andrewks
16.08.12
✎
08:17
|
а в ConfigSave всё пучком? так, может, обновить конфу БД на редактируемую?
|
|||
7
shuhard
16.08.12
✎
08:19
|
(6) + 1
может командную строку получиться |
|||
8
FoXSkr
16.08.12
✎
08:32
|
(4) СПС. Да этот вариант я храню в запасе, если ничего не получится, то так и сделаю. Но проблема интересная, не часто с ней сталкиваюсь, хотелось бы добить другим способом.
(6) Точно не знаю. На эту таблицу SQL не ругался. Из доступных действий в конфигураторе у меня есть "Открыть конфигурацию" - приводит к ошибке. "Сохранить конфигурацию БД в файл", "Сравнить конфигурацию", тоже приводит к ошибке. Или как то еще можно? |
|||
9
FoXSkr
16.08.12
✎
08:34
|
(4) А интересно я могу таблицы SQL заполнять через xml?
|
|||
10
zva
16.08.12
✎
08:44
|
(0) Конфигурация измененная?
Бэкап с живой конфой есть? |
|||
11
МихаилМ
16.08.12
✎
08:47
|
v8: v8: Загрузка в SQL базу.
понять какой объект метаданных можно просмотрев запись через Tool_1CD. спасибо авторам Tool_1CD и DT:менеджер |
|||
12
FoXSkr
16.08.12
✎
08:51
|
(10)Сейчас конфа уже стандартная. Бекап есть перед последним обновлением (от мая месяца)
|
|||
13
Пеппи
16.08.12
✎
08:53
|
(12) часто же вы бекапы делаете )
|
|||
14
zva
16.08.12
✎
08:54
|
(12) ну делайте чистую базу со стандартной конфой и перегружайте через xml
|
|||
15
dmpl
16.08.12
✎
08:59
|
(13) А тут частота не поможет. Если 3 месяца не замечали ошибку - то во всех бэкапах эта ошибка уже будет, и они, по сути, бесполезны.
|
|||
16
FoXSkr
16.08.12
✎
08:59
|
(13) Мне то все равно, база не моя, я перед тем как прикосаться к базе всегда делаю бекап, в последний раз это было в мае, как то давно предлагал Хранитель, они чето зажмотились, так что пускай пожимают свои плоды. Но смыл не в этом, даже бы если я бы бекап делал каждый день, их бы это все равно не спасло, потому что база то работает, проблема случилось при последнем обновлении (это было в мае), а вот следующее обновление я уже не могу сдделать (конфа не открывается).
|
|||
17
dmpl
16.08.12
✎
09:01
|
(0) Запуск с ключом /CheckConfig -ConfigLogIntegrity не помогает?
|
|||
18
FoXSkr
16.08.12
✎
09:30
|
(11) В теме, ссылку которой вы дали, вы предлогали отключить индекс в ddl тригере. Подскажите пожалуйста более подробнее как это сделать..
|
|||
19
МихаилМ
16.08.12
✎
10:04
|
(18)
код за Вас писать не буду. пошагово расскажу. для восстановления работоспособности нужно 1) сделать возможным закрузить таблицу config (с помощью отсключения(удаления) индекса при создании если версия скл >=2005) ) 2) удалить запись с задвоенным PK или исправить PK на уникальный 3) восстановить индекс. 1) как создать триггер читайте на сайте MS если создаетсяф таблица такая-то то создать такуюже но без PK те тупо вставить в текст триггера проверку + текст создания таблицы без PK 2) понятно 3) создать индекс скрипт создания таблицы и индекса можно сгенерировать в SSMS из таблицы config, которую создаст 1с при загрузке из dt файла и прервется на ошибке. потернируйтесь на пустой базе создавая config исполнением скрипта, без загрузки из 1с. |
|||
20
FoXSkr
16.08.12
✎
15:44
|
(19) Чето я походу сдулся с этими триггерами. Не могу понять какое событие мне надо отловить (так как вы написали, кажется будет очень сложно для человека каторый может писать только примитивные запросы SQL). Я думал отловить событие при добавление строки, проверить содержимое колонки и (для начала отказаться от добавления), но и это оказалась сложной задачей для меня :( .
В той же теме вы советовали использовать DtManager но она не хочет работать с 8.2 плаформой. А есть другая какая нибудь утилитка? |
|||
21
awa15
16.08.12
✎
16:40
|
(0) Если записи в CONFIG задвоились, надо удалить лишнюю запись (одну из двух). Чтобы удалить запись, надо:
1. Сделать копию файла 1CD! 2. В Tool_1CD включить в настройках отображение смещений в файле. 3. Посмотреть адрес (смещение) лишней записи. 4. Шестнадцатиричным редактором изменить по этому адресу один байт с 00 на 01. 5. Открыть базу в конфигураторе. Открыть ТиИ. 6. Поставить галочку (только одну!) на "Реиндексация таблиц". Выполнить ТиИ. 7. Поставить галочку (только одну!) на "Сжатие таблиц". Выполнить ТиИ. После этого можно пробовать открыть конфигурацию, выгружать в dt и т.д. Если это ошибка единственная, должно помочь, только, как правило, ошибки в одиночку не ходят. |
|||
22
МихаилМ
16.08.12
✎
17:43
|
(20)
-- создание 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 ON DATABASE FOR CREATE_TABLE AS DECLARE @tablename nvarchar(100) DECLARE @EventData XML SET @EventData = EventData() --PRINT 'CREATE TABLE Issued.' SET @tablename = @EventData.value('data(/EVENT_INSTANCE/ObjectName) [1] ','VARCHAR(50)' ) PRINT @tablename; IF @tablename = 'Config' BEGIN ROLLBACK CREATE TABLE [dbo].[Config]( [FileName] [nvarchar](128) NOT NULL, [Creation] [datetime] NOT NULL, [Modified] [datetime] NOT NULL, [Attributes] [smallint] NOT NULL, [DataSize] [int] NOT NULL, [BinaryData] [image] NOT NULL ) END -- удаление триггера /* DROP TRIGGER Config_no_PK ON DATABASE ; */ -- восстановление PK ( индекса ) /* ALTER TABLE [dbo].[Config] ADD PRIMARY KEY CLUSTERED ( [FileName] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO */ |
|||
23
FoXSkr
16.08.12
✎
21:07
|
(22) Спасибо ограменное.
|
|||
24
FoXSkr
18.08.12
✎
10:23
|
(21), (22) К сожалению ничего не помогло. И в первом и во втором варианте результат один и тот же - "Конфигурация повреждена", только теперь дело не в уникальности строки.
|
|||
25
МихаилМ
18.08.12
✎
10:37
|
(24)
попробуйте удалить один из дублей или оба перед удалением сохраните дубли в отдельную таблицу |
|||
26
МихаилМ
18.08.12
✎
11:06
|
попробуйте с помощью ms sql profiler
отследить на какой записи в Config происходит ошибка и перенесите её в копию таблицы. а в конфиг удалите |
|||
27
FoXSkr
20.08.12
✎
15:41
|
(25), (26) Спасибо огромное, на досуге обязательно вернусь к этой проблеме. Но сейчас сроки уже поджимают, вопрос решил востановлением резервной копии и перенос данных до текущего дня с помощью обмена xml (P.S. Хорошо хоть она за эти 3 месяца не сильно много в прошлых годах ковырялась).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |