Обновление ядра Ax2012 R3 пытается создать уникальный призрачный индекс - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь обновить AX2012FP до версии R3, но в процессе я получаю ошибки при синхронизации (поэтому сразу после предварительной синхронизации).Одна из ошибок заключается в следующем:

SQL error description: [Microsoft][SQL Server Native Client 11.0][SQL Server]
The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.AGREEMENTHEADER' and the index name 'I_4902PURCHNUMBERSEQUENCEIDX'. The duplicate key value is (5637144576, , 0, 4902).

Проблема здесь в том, что если я проверяю в AOT и в SQL, этот индекс не существует, поэтому я не могу временно сделать его неуникальным, пока действующие данныеОбновить.Таблица поддерживает наследование, но не распространяется ни на что.Как будто само ядро ​​пытается добавить этот индекс.Удаление записей не вариант, так как я потерял бы данные.

Я следую официальному руководству, которое советует мне использовать контрольный список обновления данных для обновления данных на месте:

https://technet.microsoft.com/en-us/library/jj733502.aspx

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Я нашел причину этой проблемы, и это было так, как подозревали.Я проверил AOT в своей среде перед обновлением, и он также не присутствовал.

Итак, во время поиска я разрешил своему клиенту искать все таблицы по этому индексу, затем я нашел производную таблицу, которая использует этот индекс.Затем я сделал его не уникальным, и теперь я могу продолжить процесс.

Очевидно, что когда вы создаете индекс для производной таблицы, ядро ​​в какой-то момент попытается добавить индекс в родительскую таблицу.Это связано с тем, что хотя таблицы из наследования таблиц отображаются в AOT как отдельные объекты таблиц, в действительности они (в AX 2012 R2 и более поздних версиях) представляют собой одну таблицу в базе данных.Превосходная статья Мартина Драба Запросы к таблицам с наследованием рекомендуется для дальнейшего чтения.

Отредактировано: я сделал для этого сценарий предварительной синхронизации, и позже мне придется решать проблему уникальных индексов во время обновления данных

0 голосов
/ 15 мая 2018

Как будто само ядро ​​пытается добавить этот индекс

Нет)

  • Таблица: AGREEMENTHEADER
  • Индекс:PURCHNUMBERSEQUENCEIDX
  • RecId дублирующейся записи: 5637144576

Невозможно найти этот индекс в SQL, так как он отключен в Axapta.Откройте AOT и изучите таблицу, индекс и свойства AOT.Попробуйте включить этот индекс на вашем AX2012FP через свойство AOT.

ЕСЛИ ваша проблема не решена, ТО установите новый экземпляр AX2012R3 и изучите AOT и сравните индексы AOT в Axapta и новом AX2012R3.Измените свою аксапту перед обновлением, чтобы устранить различия в индексах.

...