Вход | Регистрация
 

Ошибка SQL State: 23000 Native: 1505 - мое решение проблемы

Ошибка SQL State: 23000 Native: 1505 - мое решение проблемы
Я
   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
 
 

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует