Имя: Пароль:
1C
1C 7.7
v7: При загрузке базы в sql выдает ошибку.
, ,
0 Калиостро
 
07.05.13
17:50
Делается перевод базы из dbf в sql.
Движок 1с 7.7 релиз 27. SQL 2000.
База dbf размером около 4 ГБ.

При загрузке в 1с 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 1. Most significant primary key is 'MD '.

SQL State: 42000
Native: 1750
Message: [Microsoft][ODBC SQL Server Driver][SQL Server]Could not create constraint. See previous errors.

SQL State: 01000
Native: 3621
Message: [Microsoft][ODBC SQL Server Driver][SQL Server]The statement has been terminated.
---------------------------


Сейчас в тестовой базе dbf запущено ТИИ. Продолжается уже четвертые сутки, неизвестно когда закончится.
Чем можно вылечить побыстрее?
1 ДенисЧ
 
07.05.13
17:52
был бы изанчально в скл - элементарно. в дбф - сложнее
2 IamAlexy
 
07.05.13
17:52
3 МихаилМ
 
07.05.13
19:04
выясните в какой таблице не создается PK

в аналогичной таблице
в дбф базе

найдите замноженные записи, исправте (удалите, сверните,объедините )


и проделайте для всех таблиц дбф проверку на уникальность PK  

если мс скл был >=2005
то можно отключить создание индексов.
создать их после загрузки
4 Эльниньо
 
07.05.13
19:12
У него ТИИ сейчас идёт. Должно сказать, где дубль АйДи.
5 МихаилМ
 
07.05.13
19:26
(4)
в дбф варианте ТИИ не находит и не справляет такого рода ошибки дублей

нужно самостоятельно исправлять
6 Калиостро
 
08.05.13
10:56
Возвращаясь к вопросу.
ТИИ продожается уже больше 5 суток. Что там делается - ХЗ. В конфигураторе виден только белый экран. Процесс 1с отжирает свои положенные 25% памяти в терминале.

Некоторое время эта база была центральной в РИБ. Думаю, неуникальность ключей возникла при обменах.

(3) Как проверить таблицы на уникальность ключей в дбф?
скл 2000.
7 ALoHA
 
08.05.13
11:41
Создай новую пустую базу в СКЛ загрузи этот бекап еще раз.
8 МихаилМ
 
08.05.13
12:00
(6)
нужно написать программу
которая проанализирует словарь (1cv7.dd)
и для каждой таблицы проверит уникальность комбинации
значений полей индекса.

анализаторов 1cv7.dd в интрнет должно быть много
может и готовая программа найдется.
9 Mikeware
 
08.05.13
12:03
(6) зачем так усложнять?
посмотреть профайлером, на создание какого индекса ругался сиквел, и запросом пыддернуть
10 МихаилМ
 
08.05.13
12:15
(9)
знать мало, в какой таблице.
все равно для 1 таблицы писать прогу или для 1000.
к тому же если ошибка не 1 талице придется повторять загрузку.
Лучше сделать комплексно и проверить всю базу.
11 Ёпрст
 
08.05.13
12:31
(0)скачай ConfStat и смотри, че делает пофигуратор в данный момент.
А так, 4 гиговая база - это ни о чем для дбф варианта, и скуль там как бэ не нужон.
12 Ёпрст
 
08.05.13
12:31
Ну и ТиИ не исправит тебе дубли в ИД
13 Ёпрст
 
08.05.13
12:31
можешь смело его прерывать - бесполезная трата времени.
14 Mikeware
 
08.05.13
12:33
(12) вроде должен сообщить?
(10) достаточно. И писать ничего не надо. Хотя, конечно, можно, и сложного ничего нет...
15 Ёпрст
 
08.05.13
12:34
(14) неа, ни id в sc ни iddoc в 1sjourn не ловит..
16 Ёпрст
 
08.05.13
12:35
дубли т.е
17 Калиостро
 
08.05.13
13:14
(7) Делал уже и на сервере и локально на ноуте - те же ошибки.
18 Калиостро
 
08.05.13
13:23
(11) ConfStat ничего не показывает. Подозрительно, что в каталоге базы дата и время изменения файлов висят неизменными практически с самого начала ТИИ. Может, 1с просто зависла в конфигураторе?
19 Калиостро
 
08.05.13
14:34
(8) Я правильно понял, из 1cv7.dd я беру названия таблиц и список индексов
и таким, например, запросом

   |SELECT  
   |     " + IndexedFields + ",
   |     SUM(1) as Кол
   |FROM
   |    " + Name + "
   |GROUP BY
   |     " + IndexedFields + "

ищу, где есть неуникальные ключи.
20 Mikeware
 
08.05.13
14:43
(19)
select idddoc, count(*)
from _1sjourn
group by iddoc
having count(*)>1
21 Калиостро
 
08.05.13
14:56
(20) Выдает пустую таблицу.
22 Mikeware
 
08.05.13
15:00
(21) а для какой таблицы  он индекс стоил, когда ключи дублировались?
23 Mikeware
 
08.05.13
15:01
+(22) на крайняк, dts-ом из dbf таблицу импорти, и проверь...
24 Калиостро
 
08.05.13
15:07
(22) А как посмотреть? Сообщение, которое выходит при загрузке я скопировал в (0).
25 Mikeware
 
08.05.13
15:08
(24) профайлер на базу натрави... и как встанет - посмотри последние запросы.
26 Калиостро
 
08.05.13
15:08
(23) что такое dts?
27 Mikeware
 
08.05.13
15:11
(26) за что в яндексе забанили?
28 slavawashere
 
08.05.13
15:41
(6) ТИИ  идет так долго если поставили все галочки?  для нахождения дублей вроде достаточно первых двух - переиндексация и физическая целостность..  у меня на подобной базе шло около 6ти часов

Другое дело что 1С77  не умеет загружать файлы близкие к 4м гигам,  тоже выдавал всякие ошибки, но потом все загрузилось через обработку Книга знаний: Плагин для лечения выгрузки и загрузки больших баз в 1С 7.7
29 Калиостро
 
08.05.13
15:56
Последнее, что выдал профайлер:

If not exists (select * from sysindexes where name='PK__1SUPDTS' and id=object_id('_1SUPDTS'))Alter table _1SUPDTS add constraint PK__1SUPDTS PRIMARY KEY CLUSTERED(DBSIGN,TYPEID,OBJID)
30 Калиостро
 
08.05.13
15:56
(28) Галочки были поставлены первые 3.
31 Калиостро
 
08.05.13
15:59
(28) База-то небольшая - выгрузка в zip занимает 300 метров.
В архиве файл 1Cv77.dat - 1.8 Гб.
32 toypaul
 
гуру
08.05.13
16:05
(29) посмотри в DBF таблицу _1SUPDTS
по всей видимости в ней есть потовряющися по ключу записи. удали их. и снова переноси.
33 toypaul
 
гуру
08.05.13
16:06
повторяющиеся ключи кстати проще искать в текущей таблице _1SUPDTS на MS SQL соот-щим запросом
34 Калиостро
 
08.05.13
16:09
(32) А какие там ключи? В 1cv7.dd нет описания таблицы 1SUPDTS.
35 toypaul
 
гуру
08.05.13
16:10
(34) у тебя в запросе написано DBSIGN,TYPEID,OBJID
36 slavawashere
 
08.05.13
16:15
(30)  с тремя галками ТИИ  тоже уходило на сутки,  тупо прервал - запустил заново с двумя - нашлись какие-то ошибки и все загрузилось
37 Калиостро
 
08.05.13
16:43
(35) Нашлось 8 записей с повторяющимися ключами. Попробую удалить лишние и загрузить.
38 Mikeware
 
08.05.13
17:30
апдейтс вообще можно удалить.
39 Ковычки
 
08.05.13
17:32
просче текстовик готовый из выгрузки поправить
40 Калиостро
 
09.05.13
09:50
Удалил лишние записи, загрузка пошла.
Сейчас смотрю в конфигураторе, в строке состояния "Пересчет ссылок по графе отбора ..." начиная с 1750 года. Смотрю в общем журнале без отборов - самый первый документ 01.01.1980.
Откуда такие периоды в пересчете, интересно?
41 Ковычки
 
09.05.13
13:52
не 1750, а 1749
42 Ковычки
 
09.05.13
13:53
вернее 1753
AdBlock убивает бесплатный контент. 1Сергей