0
Arhitektor
15.09.04
✎
13:30
|
Это проблема возникла у нас вчера и сегодня закончилась нашей победой. Я изложу ход решения проблемы, может кому и пригодиться.
При загрузке в монопольном режиме SQL ругается:
SQL State: 23000
Native: 1505
Message: [Microsoft][ODBC SQL Server Driver][SQL Server]CREATE UNIQUE INDEX terminated because a duplicate key was found for index ID 2. Most significant primary key is ' 6OJ '.
SQL State: 01000
Native: 3621
Message: [Microsoft][ODBC SQL Server Driver][SQL Server]The statement has ben terminated.
При загрузке в обычном режиме выскакивает ошибка:
Нарушена структура индексного файла 1scrdoc. Запустите программу в монопольном режиме.
Действовал я следующим образом:
1) Открыл файл 1Cv7.DDS и нашел в нем описание индексов таблицы 1scrdoc:
#----Indexes------
# Name |Descr |Unique |Indexed |Type I=PK__1SCRDOC |ROW_ID |1 |ROW_ID |1
I=CHILD |Child Referenc|1 |CHILDID,MDID,PARENTVAL |1 I=PARENT |Parent Referen|1 |MDID, PARENTVAL, CHILD_DATE_TIME_IDDOC |0
Насколько я понял
ID1 = ROW_ID
ID2 = CHILDID
ID3 = MDID
ID4 = PARENTVAL
ID5 = MDID
ID6 = PARENTVAL
ID7 = CHILD_DATE_TIME_IDDOC
2) Поскольку ошибка в ID 2, то в Query Analyzer выполняю следующий код
SELECT [ROW_ID],
[MDID],
[PARENTVAL],
[CHILD_DATE_TIME_IDDOC],
[CHILDID],
[FLAGS]
FROM [Buh].[dbo].[_1SCRDOC]
WHERE [CHILDID] like '%6OJ%'
P.S. Можно, конечно, и без [FLAGS], но...
3) В получившейся выборке нахожу одинаковые записи, т.е. записи, в которых различаются только 2 поля [ROW_ID] и [FLAGS] и одну из них удаляю.
P.S. Я удалял записи с большим [ROW_ID].
4) Снова запускаю в монопольном режиме. У меня снова выругалось:
SQL State: 23000
Native: 1505
Message: [Microsoft][ODBC SQL Server Driver][SQL Server]CREATE UNIQUE INDEX terminated because a duplicate key was found for index ID 7. Most significant primary key is ' 6OJ '.
SQL State: 01000
Native: 3621
Message: [Microsoft][ODBC SQL Server Driver][SQL Server]The statement has ben terminated.
т.е. теперь тоже самое только в поле [CHILD_DATE_TIME_IDDOC]. Делаем 2). Запрос в данном случае имеет вид
SELECT [ROW_ID],
[MDID],
[PARENTVAL],
[CHILD_DATE_TIME_IDDOC],
[CHILDID],
[FLAGS]
FROM [Buh].[dbo].[_1SCRDOC]
WHERE [CHILD_DATE_TIME_IDDOC] like '%6OJ%'
и дальше по пункту 3)
Потом снова 4), у меня выдало тоже ID7, только ' 6WI ' и т.д., пока не запустится :)
Прошу прощения если что-то не так, но думаю более опытные подправят если что не так.
С уважением,
Arhitektor
|
|