AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Администрирование
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.09.2003, 14:05   #1  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Аватар для Антон Солдатов
 
386 / 27 (1) +++
Регистрация: 29.12.2002
Адрес: Новосибирск
? экспорт/импорт: неуникальный RecId
Возникла проблема, при импорте данных компании возникает ошибка:
Невозможно создать запись в 'TmpRecIdMap'. Запись уже существует.

В принципе, проблема понятна, и некоторые идейки по ее решению есть, но все же:

Кто-нибудь с подобным сталкивался? Как лечили?
Старый 30.09.2003, 12:00   #2  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Аватар для Антон Солдатов
 
386 / 27 (1) +++
Регистрация: 29.12.2002
Адрес: Новосибирск
мои выводы. вдруг кому интересно.
причина: 1) неидеальный механизм присвоения RecId; 2) одновременно с импортом большого кол-во данных, другие пользователи создавали записи в других таблицах(м/б тоже импортировали).
как лечил: делал отчет: recid, tablename с неуникальными по recid записями. думал. делал экспорт/импорт(с очисткой) отобранных таблиц. проверка/синхронизация. вроде пока не шатается. эмоции негативные.
Старый 30.09.2003, 12:27   #3  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
а "проверка кодов записей" из "SQL Администрирования" что говорит?
Старый 01.10.2003, 05:36   #4  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Аватар для Антон Солдатов
 
386 / 27 (1) +++
Регистрация: 29.12.2002
Адрес: Новосибирск
говорит, что temporary tablespace у меня маленький - один update с вложенными select-ами не проходит вечером еще раз запущу..
Старый 25.09.2007, 12:09   #5  
denny is offline
denny
Участник
 
93 / 29 (1) +++
Регистрация: 16.11.2003
Адрес: Novosibirsk
Сам только что столкнулся. Помогает снятие параметра "Резервирование кодов записи" в настройках импорта. При этом выделение recId для импортируемых записей проходит по более сложному и долгому пути, но с гарантированной уникальностью (см. SysDataImport.importBuffer() и зависимость от значения параметра IsFastImport)
__________________
Денис Балуев.
Старый 19.06.2009, 00:39   #6  
Dozer is offline
Dozer
Участник
AxAssist
Соотечественники
 
107 / 24 (1) +++
Регистрация: 16.11.2004
Адрес: г. Калгари, Канада
:(
Прошу прощения за поднятие очень старой темы, но возникла подобная проблема в аксапте 2009.
Таже самая ошибка:
Cannot create a record in Map (TmpRecIdMap).
The record already exists.
Возникает постоянно при попытке дублирования компании и при попытке импорта.
В 2009ой уже нет такого параметра "Резервирование кодов записи" (покрайней мере я не нашел), но я пошерстил код, и обнаружил что система импорта всё так же содержит переменную isFastImport, только теперь она привязана к чекбоксу "Use Record ID Compression".
К сожалению не зависимо от того снят этот чек бокс или установлен ошибка продолжает появляться.

Может кто-нибудь знает как это побороть?
__________________
С уважением, Dozer
Старый 22.06.2009, 18:53   #7  
Dozer is offline
Dozer
Участник
AxAssist
Соотечественники
 
107 / 24 (1) +++
Регистрация: 16.11.2004
Адрес: г. Калгари, Канада
Ну раз никто не знает, то может быть подскажете какая в аксапте 2009 политика для RecId? В аксапте 3 вроде как RecId должен был быть уникальным в пределах одной компании.
А вот инфу по 2009ке я что-то найти не могу. Есть подозрения что он должен быть уникальным только в пределах одной таблицы. Это так или нет?
Оказывается каким-то образом в нескольких таблицах появились записи с идентичными RecId. Вот думаю как лечить.
__________________
С уважением, Dozer
Старый 22.06.2009, 21:28   #8  
petr is offline
petr
Участник
Соотечественники
 
557 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Уникальный в пределах таблицы, так же как и в четверке.
За это сообщение автора поблагодарили: gefr (1), Dozer (1).
Старый 01.03.2010, 07:20   #9  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1234 (44) ++++++++
Регистрация: 11.04.2008
AX 3.0
А чем грозит неуникальность RecId в рамках компании?
Стоит задача импорта данных в DAX из внешней системы. Простым способом видится создание таблицы нужной структуры в аксапте, но данные в неё будут толкаться внешней системой, на уровне SQL.
RecId при этом генерить автоинкрементно -> появятся дубликаты в рамках компании. Чем это грозит?
Старый 01.03.2010, 08:26   #10  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
885 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Чем это грозит?
Если будет скопирована системная идеология забора значений из таблицы генератора RecID (сессия отжирает некую порцию значений, расходует его, отжирает следующую) - особых проблем быть не должно возникнуть. Но упаси бог автоинкремент строить в рамках таблицы - сломается все к чертям.
Если есть бизнес коннектор - лучше через него для вставки из сторонней программы оформить вызов класса, обрабатывающего заполнение полей абстрактной таблицы, вставку в в нее, благо дело есть класс Common, можно к полям по кодам обращаться, а извне данные по кодировке таблиц/полей доступны в таблице SqlDictionary. В этом случае проблем вообще быть не должно.
__________________
Мы летаем, кружимся, нагоняем ужасы ...
За это сообщение автора поблагодарили: DSPIC (1).
Старый 01.03.2010, 09:32   #11  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1234 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от TasmanianDevil Посмотреть сообщение
... но упаси бог автоинкремент строить в рамках таблицы - сломается все к чертям...
Вот интересует именно этот момент. Что конкретно сломается? Данные этой "грязной" таблицы актуальны только на момент импорта, их не планируется куда-то потом переносить, и как-то их использовать в системе. Эта таблица будет только на чтение, запись в неё со стороны DAX не будет осуществляться. Т.е. можно представить, что эта таблица будет использоваться как View.
Старый 01.03.2010, 09:36   #12  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,490 / 1060 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Если эта таблица не будет связана по RecId с другими таблицами и её RecId не будет превышать системный, то проблем не будет.

Можно загрузить данные в промежуточную таблицу (которая потом будет не нужна), а потом джобом из DAX загрузить из промежуточной в нужную, тогда будет соблюдена идеология и RecId будет сгенерен системой.
Старый 01.03.2010, 09:44   #13  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1234 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от raz Посмотреть сообщение
Если эта таблица не будет связана по RecId с другими таблицами и её RecId не будет превышать системный, то проблем не будет.
1. Превышать системный - это который текущий системный, или максимально возможный? Чуть подробнее, если можно.
2. И что всё-таки случится, если будет превысит? Есть примеры?

Цитата:
Сообщение от raz Посмотреть сообщение
Можно загрузить данные в промежуточную таблицу (которая потом будет не нужна), а потом джобом из DAX загрузить из промежуточной в нужную, тогда будет соблюдена идеология и RecId будет сгенерен системой.
Так и планируется. Это будут сырые данные которые будут обрабатываться (читаться) аксаптой, и на основе их где-то что-то обновляться...
Старый 01.03.2010, 10:39   #14  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,490 / 1060 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Цитата:
Сообщение от DSPIC Посмотреть сообщение
1. Превышать системный - это который текущий системный, или максимально возможный? Чуть подробнее, если можно.
2. И что всё-таки случится, если будет превысит? Есть примеры?
1. текущий системный
2. при дальнейшей работе в аксапте с этой таблицей, существует вероятность (мизерная, но существует) вставки записи с существующим RecId
3. я описывал проблемы в общем, в вашем случае их может не быть, т.к. загрузка будет единичной. однако таким образом можно загружать данные справочников, которые будут использованы в дальнейшем.
За это сообщение автора поблагодарили: DSPIC (2).
Старый 01.03.2010, 11:07   #15  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
В таблице записи накапливаются?

Можно, как вариант, создать дыру в RecId на максимальное кол-во записей в этой таблице и использовать recId из этого диапазона

Да и можно просто воспроизвести для генерации recId логику из DAX - тогда вообще не будет проблем (даже теоретических)
__________________
Axapta v.3.0 sp5 kr2
Старый 01.03.2010, 11:15   #16  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
А в дальнейшем эти сырые данные должны оставаться в системе? Если нет и общее кол-во этих записей ограничено размерами текущей порции загрузки, то можно нагенерить нужное кол-во recid (100 тыс. штук, например) и всё время использовать его. Или создать список пропущенных дыр и использовать его. Можно после использования просто для всех записей очищать все поля, кроме RecId, а при следующей загрузке не добавлять новые, а обновлять имеющиеся (по аналогии, как мы вводим данные в чистый лист Excel, где строки уже пронумерованы).

Упс! AndyD опередил и был конструктивно менее многословен
За это сообщение автора поблагодарили: DSPIC (1).
Старый 01.03.2010, 11:59   #17  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1234 (44) ++++++++
Регистрация: 11.04.2008
По поводу дырки - идея понятна, спасибо. И идея генерации RecId по должному алгоритму тоже понятна.
Вопрос чуть другой (услышьте вопрос ):
что будет, если RecId сгенерированы автоинкрементно, т.е. будут дабликаты в рамках компании (но уникальны в рамках таблицы)? Чем это грозит. Если ничем, то зачем морочиться с корректным алгоритмом RecId.
Старый 01.03.2010, 12:52   #18  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
Вопрос был услышан

Если не доживете до сжатия recId - то ничем не грозит.
В вашем случае, даже дублирование recId в одной таблице никак не скажется на работе (без контроля уникальности на уровне БД, естественно).

Но.
Если придется делать сжатие, если, в дальнейшем, кто-то настроит связку по recId с этой таблицей, то проблемы появятся
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: DSPIC (5).
Старый 01.03.2010, 19:38   #19  
alex55 is offline
alex55
MCTS
MCBMSS
 
224 / 145 (5) +++++
Регистрация: 13.02.2007
Адрес: Москва
Цитата:
Сообщение от DSPIC Посмотреть сообщение
... т.е. будут дабликаты в рамках компании (но уникальны в рамках таблицы)?...
Наверное торможу под вечер, но разве такое возможно? оО
Теги
recid, уникальность, экспорт/импорт

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Экспорт/импорт платежных поручений _scorp_ DAX: Функционал 96 04.05.2017 17:52
Начальный импорт таблиц, связанных по RecId Рустем Гизатуллин DAX: Администрирование 3 02.12.2008 13:39
Импорт/экспорт // RecId farlander DAX: Функционал 5 29.07.2008 08:42
Экспорт/импорт в Аксапте 2.5 Grib DAX: Администрирование 5 20.01.2004 13:51
Экспорт-импорт и Recid skof DAX: Программирование 1 26.02.2003 13:36

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:11.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.