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

Загрузка базы в SQL (ошибка: sql state 23000, native 1505 - create unique index)

Загрузка базы в SQL (ошибка: sql state 23000, native 1505 - create unique index)
Я
   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)
общие реквизиты документа с типом строка неогр. длины должны быть последними в порядке следования.
   VladZ
 
3 - 17.05.11 - 10:24
   Snork
 
4 - 17.05.11 - 10:41
(2) общие реквизиты неогр. длинны сделал ограниченными (только Комментарий был)

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

сейчас попробую перевыгрузить ее в чистую файловую
   Snork
 
5 - 17.05.11 - 11:43
(1) в файловую загружается-выгружается нормально
   Sh1ko
 
6 - 17.05.11 - 11:47
(0) Аналогичная проблема была на выходных, база в дбф, хотели перевести на скл. Сначала была проблема как в (2) - поставил в конец, потом уже как в (0).
   Ёпрст
 
7 - 17.05.11 - 11:47
(4) грузи частями тогда.
   Snork
 
8 - 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, далее выгрузка и загрузка в скуль.
   Snork
 
12 - 17.05.11 - 16:24
(11) не помогло
   sapphire
 
13 - 17.05.11 - 16:25
(0) Релиз?
   Snork
 
14 - 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
Ну так посмотри что там за данные неуникальные
Если немного - исправить руками
Если что-то полетело - можно временно прибить индексы, посмотреть, исправить, потом создать
   Snork
 
18 - 17.05.11 - 17:00
(17) т.к. данных изначально там нет, то что собственно смотреть?

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

мне кажется копать надо со стороны файловой базы
   Snork
 
19 - 17.05.11 - 17:01
(18) естесссно запросы выполнял после неудачной загрузки
   val
 
20 - 17.05.11 - 17:58
(0) Уникальные индексы в 1С - это обычно ID, IDDOC.
Подключи любой обработчик DBF, в котором можно писать запросы, и найди запросом повторяющиеся поля.
   sammmm
 
21 - 17.05.11 - 18:00
в какой-то таблице одинаковый id,через enterprise menedger выловить его и исправить. У меня была такая же ошибка в справочнике ТМЦ. Чтобы узнать какой справочник юзаю профайлер. Смотри в каком месте валиться
   val
 
22 - 17.05.11 - 18:03
(21) У автора нет базы SQL. Искать придется в DBF.
   Ёпрст
 
23 - 18.05.11 - 09:21
Ну тогда тупо фокс/1sqlite в помощь и пройтись по всем табличкам в поисках дублей  прямым запросом.
   sammmm
 
24 - 18.05.11 - 09:22
(23) да достаточно в время загрузки в SQL запустить профайлер и там всё посмотреть
   sammmm
 
25 - 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 поле
   Snork
 
26 - 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 (Спр. ЦеновыеПризнаки)
   Snork
 
27 - 18.05.11 - 17:59
такого рода сообщений:
If exists (select * from sysindexes where na
-много ~1000

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

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

Таким образом откуда берется уникальный индекс пока не понятно
   Snork
 
29 - 18.05.11 - 18:08
SQL 2000 (8.00.760) SP3
   val
 
30 - 18.05.11 - 21:57
(26) Ищи в SC319 двойные ROW_ID или ID
   Snork
 
31 - 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 в ней.
 
 
   vde69
 
34 - 19.05.11 - 08:40
документы где более 9999 строк есть????
   Ёпрст
 
35 - 19.05.11 - 08:40
(34) есть
   vde69
 
36 - 19.05.11 - 08:42
(35) вроде как такие документы криво выгружаются из файловой, по этому и не загружаются в скуль
   vde69
 
37 - 19.05.11 - 08:43
(36)+ и тестирование на них жутко ругаетя :)
   sammmm
 
38 - 19.05.11 - 09:09
кинь скриншот этой ошибки


sql state 23000, native 1505 - create unique index
   sammmm
 
39 - 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
А ТИИ не пробовали?
   Snork
 
41 - 19.05.11 - 11:40
(34) есть. это ввод остатков. при загрузке их в SQL 1С в них перенумеровывает строки. но раньше это не проводило к ошибке. я думаю дело не в них.

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

(32) просмотрел DBF SC319 а файловой есть пара не уникальных ID. седня попробую исправить их и повторить
   Snork
 
42 - 19.05.11 - 11:41
(40) да. см. (0)
   sammmm
 
43 - 19.05.11 - 11:45
(41)вот и всё, удаляй ненужные и будет тебе счастье))
   Snork
 
44 - 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, если, собственно, запрос на них и ориентируется?
   nicxxx
 
48 - 26.05.11 - 14:05
(45)+ а у меня есть обработка, которая прямым запросом шерстит табличку SC319, но ТС уже справился с проблемой
   Ёпрст
 
49 - 26.05.11 - 14:09
(47) хэвинг каунт >1 .. и ау.
 
 Рекламное место пустует


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