Имя: Пароль:
1C
 
Загрузка базы в SQL (ошибка: sql state 23000, native 1505 - create unique index)
0 Snork
 
17.05.11
10:12
Если файловая база 7.7. При загрузке ее в sql 2000 вылазит ошибка:
sql state 23000, native 1505 - create unique index.

Что пробовал:
1. тестирование и исправление - не помогло
ругается на не уникальные номера строк в вводах остатках и пере-нумеровавывает их. потом на неисправимой ошибке вылетает.

2. MD diag от Soaron - ошибок не нашел

3. Гуглил мисту на предмет аналогичных ошибок:
Ошибка SQL State: 23000 CREATE UNIQUE INDEX terminated because a duplicate key w
Ошибка SQL State: 23000 Native: 1505 - мое решение проблемы
Ошибка SQL State: 23000 Native: 1505 - обновление решения проблемы
Ощибка при реиндексации.

- но у меня исходная база - файловая. в SQL так ничего и не загрузилось. потому п. 3 ничего не дал.

Что делать?
1 1Сергей
 
17.05.11
10:12
а в ДБФ грузица?
2 Ёпрст
 
гуру
17.05.11
10:15
(0)
общие реквизиты документа с типом строка неогр. длины должны быть последними в порядке следования.
3 VladZ
 
17.05.11
10:24
4 Snork
 
17.05.11
10:41
(2) общие реквизиты неогр. длинны сделал ограниченными (только Комментарий был)

очередное тестирование файловой версии таки закончилось удачно (физическая целостность + реиндексация):
Файл DT3957.dbf. Запись 107499. Поле LINENO. Неверное содержимое поля Numeric - "****" (это док. ВводОстТМЦ (мн. ч.))
...
Файл RA328.dbf. Запись 420056. Поле LINENO. Неверное содержимое поля Numeric - "****"  (это рег. ПартииНаличие)
...

сейчас попробую перевыгрузить ее в чистую файловую
5 Snork
 
17.05.11
11:43
(1) в файловую загружается-выгружается нормально
6 Sh1ko
 
17.05.11
11:47
(0) Аналогичная проблема была на выходных, база в дбф, хотели перевести на скл. Сначала была проблема как в (2) - поставил в конец, потом уже как в (0).
7 Ёпрст
 
гуру
17.05.11
11:47
(4) грузи частями тогда.
8 Snork
 
17.05.11
12:16
загрузить протестированную файловую базу опять не получилось в SQL. ошибка так-же (0)

(4) как грузить частями?
9 Ёпрст
 
гуру
17.05.11
12:18
(8) в начале справочники, потом документы..
Можно и отдельные виды документов

Либо вырезанием ненужного в дат-файле, либо тупо дбф-ки поприбивать перед выгрузкой в дат файлик.
10 Ёпрст
 
гуру
17.05.11
12:19
потом, всегда можно найти, на какой табличке спотыкается при загрузке в скуль и найти причину неуникального создания записи.
11 Ёпрст
 
гуру
17.05.11
12:22
+10 для начала, попробуй прибить 1scrdoc, далее выгрузка и загрузка в скуль.
12 Snork
 
17.05.11
16:24
(11) не помогло
13 sapphire
 
17.05.11
16:25
(0) Релиз?
14 Snork
 
17.05.11
16:26
1C 7.7 27 ядро
15 Ёпрст
 
гуру
17.05.11
16:31
(14) а скуль поди 2005/2008 ?
16 Ёпрст
 
гуру
17.05.11
16:32
а всё увидал, что 2000..
17 КонецЦикла
 
17.05.11
16:37
Ну так посмотри что там за данные неуникальные
Если немного - исправить руками
Если что-то полетело - можно временно прибить индексы, посмотреть, исправить, потом создать
18 Snork
 
17.05.11
17:00
(17) т.к. данных изначально там нет, то что собственно смотреть?

запросы по линкам из (0) я выполнял (те, что по получению данных а не по update таблиц). все они ничего не выдавали

мне кажется копать надо со стороны файловой базы
19 Snork
 
17.05.11
17:01
(18) естесссно запросы выполнял после неудачной загрузки
20 val
 
17.05.11
17:58
(0) Уникальные индексы в 1С - это обычно ID, IDDOC.
Подключи любой обработчик DBF, в котором можно писать запросы, и найди запросом повторяющиеся поля.
21 sammmm
 
17.05.11
18:00
в какой-то таблице одинаковый id,через enterprise menedger выловить его и исправить. У меня была такая же ошибка в справочнике ТМЦ. Чтобы узнать какой справочник юзаю профайлер. Смотри в каком месте валиться
22 val
 
17.05.11
18:03
(21) У автора нет базы SQL. Искать придется в DBF.
23 Ёпрст
 
гуру
18.05.11
09:21
Ну тогда тупо фокс/1sqlite в помощь и пройтись по всем табличкам в поисках дублей  прямым запросом.
24 sammmm
 
18.05.11
09:22
(23) да достаточно в время загрузки в SQL запустить профайлер и там всё посмотреть
25 sammmm
 
18.05.11
09:43
что-то типо такой ошибки в Профайлере будет
If not exists (select * from sysindexes where name='IDD' and id=object_id('SC1637') )Create UNIQUE index IDD  on SC1637 (ID)
SC1637 и есть твоя таблица,а IDD поле
26 Snork
 
18.05.11
17:58
сделал в профайлере. последнее, что выдал:
If exists (select * from sysindexes where name='DESCR' and id=object_id('SC8775') )Drop index SC8775.DESCR    1CV7        SA    0    27    0    0    8408    52    2011-05-18 17:40:45.187    
If not exists (select * from sysindexes where name='DESCR' and id=object_id('SC8775') )Create UNIQUE index DESCR  on SC8775 (DESCR,ROW_ID)    1CV7        SA    0    270    9    0    8408    52    2011-05-18 17:40:45.187    
If exists (select * from sysindexes where name='PK_SC319' and id=object_id('SC319') )Alter table SC319 drop constraint PK_SC319    1CV7        SA    0    32    0    0    8408    52    2011-05-18 17:40:45.187    
If not exists (select * from sysindexes where name='PK_SC319' and id=object_id('SC319'))Alter table SC319 add constraint PK_SC319 PRIMARY KEY CLUSTERED(ROW_ID)    1CV7        SA    31    1374    164    30    8408    52    2011-05-18 17:40:45.187    
If exists (select * from sysindexes where name='IDD' and id=object_id('SC319') )Drop index SC319.IDD    1CV7        SA    15    26    0    16    8408    52    2011-05-18 17:40:45.217

(23) (24) помогите расшифровать?
косяк в SC319 (Спр. Цены) или все таки в SC8775 (Спр. ЦеновыеПризнаки)
27 Snork
 
18.05.11
17:59
такого рода сообщений:
If exists (select * from sysindexes where na
-много ~1000

но спотыкается именно на SC319
28 Snork
 
18.05.11
18:06
что самое интересное у спр Цены длина кода и наименования = 0,
а у спр Ценовые признаки длина кода = 0, наименование = 50

Цены - подчинен Номенклатуре, Ценовые признаки - без подчинения.

Таким образом откуда берется уникальный индекс пока не понятно
29 Snork
 
18.05.11
18:08
SQL 2000 (8.00.760) SP3
30 val
 
18.05.11
21:57
(26) Ищи в SC319 двойные ROW_ID или ID
31 Snork
 
18.05.11
23:01
а почему остальные ошибки:
If exists (select * from sysindexes where nam...

не приводили к фатальному вылету?
32 МихаилМ
 
19.05.11
00:24
в дбф не идроу

ищите в ид или иддок
33 Ёпрст
 
гуру
19.05.11
08:37
(28) в словаре посмотри, какие индексы лепятся у этой таблички.. и ищи дубли ID в ней.
34 vde69
 
19.05.11
08:40
документы где более 9999 строк есть????
35 Ёпрст
 
гуру
19.05.11
08:40
(34) есть
36 vde69
 
19.05.11
08:42
(35) вроде как такие документы криво выгружаются из файловой, по этому и не загружаются в скуль
37 vde69
 
19.05.11
08:43
(36)+ и тестирование на них жутко ругаетя :)
38 sammmm
 
19.05.11
09:09
кинь скриншот этой ошибки


sql state 23000, native 1505 - create unique index
39 sammmm
 
19.05.11
09:14
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 '.


если у тебя тоже после Most significant primary key is ... есть какое то значение (типа ' 6OJ ') тогда пишешь в query analizer пишешь такой запрос

select * from sc319 where id = ' 6OJ '

и смотришь кто тебе жизнь портит
40 Креатив
 
19.05.11
09:29
А ТИИ не пробовали?
41 Snork
 
19.05.11
11:40
(34) есть. это ввод остатков. при загрузке их в SQL 1С в них перенумеровывает строки. но раньше это не проводило к ошибке. я думаю дело не в них.

(39) Most significant primary key - такого у меня нет

(32) просмотрел DBF SC319 а файловой есть пара не уникальных ID. седня попробую исправить их и повторить
42 Snork
 
19.05.11
11:41
(40) да. см. (0)
43 sammmm
 
19.05.11
11:45
(41)вот и всё, удаляй ненужные и будет тебе счастье))
44 Snork
 
26.05.11
13:29
Все заработало! Всем спасибо.

Итого:
1. запустив профайлер SQL загружаем базу. с логе профайлера будет инфа на какой ошибке все завалилось.
2. отредактировал битые dbf ки с помощью плугина wlx_xbaseview к тотал командеру (удалил дублирующие записи)
3. дублирующие записи нашел: выгрузил dbf в excel  и сделал сводную таблицу по ключевым полям. где кол-во было > 1 -- это дубли
45 Ёпрст
 
гуру
26.05.11
13:38
(44) как всё запущенно, мог бы и прямым запросом прошерстить все таблички.
Чем какой то там эксель и прочая шняга.
46 Ёпрст
 
гуру
26.05.11
13:39
(42) Тии не исправляет задвоенные id /iddoc
47 МишельЛагранж
 
26.05.11
13:46
(45) а как найдет задвоенные id, если, собственно, запрос на них и ориентируется?
48 nicxxx
 
26.05.11
14:05
(45)+ а у меня есть обработка, которая прямым запросом шерстит табличку SC319, но ТС уже справился с проблемой
49 Ёпрст
 
гуру
26.05.11
14:09
(47) хэвинг каунт >1 .. и ау.