Duplicate key was found при установке ManageEngine ServiceDesk 10508

Обновлено 24.07.2019

ManageEngine logoДобрый день! Уважаемые читатели и гости одного из крупных IT блогов на просторах рунета Pyatilistnik.org. В прошлый раз мы с вами решили ситуацию при которой мы не могли подключиться к удаленному рабочему столу, получая "Причиной ошибки может быть исправление шифрования CredSSP". Сегодня же я хочу вернуться к программному продукту ManageEngine ServiceDesk и разобрать причину появления ошибки при установке свежей версии "duplicate key was found". Думаю, что не я один с такой столкнулся.

Описание ошибки

У меня есть ManageEngine ServiceDesk 10500, который я обновил до последней версии. Через некоторое время я обнаружил, что появилась свежая версия 10508 и я захотел обновить свой тестовый стенд, состоящий из двух виртуальных машин на гипервизоре Vmware ESXI 6.5.

ManageEngine проверка новой версии

При попытке установить свежую версию, я получил ошибку "Сбой обновления, к сожалению, ваше обновление с 10500 до 10508 не удалось. Отправьте нам файл журнала для дальнейшего анализа (Sorry, your upgrade from 10500 to 10508 failed. Send us the log file for further analysis)" с нечто подобным я же встречался и знал, что и где искать, и прекрасно осознавал, что причин у ошибки может быть очень много, давайте решать.

Ошибка duplicate key was found при установке ManageEngine

Устранение ошибки duplicate key was found

Если вы получили ошибку обновления, то после закрытия все окон. у вас создастся архив с логом операций. вам его необходимо проанализировать. Находится архив по пути C:\ManageEngine\ServiceDesk\logs\upgradeManagerLog.

Архив с логами ошибки обновления ManageEngine

Распаковав архив вы открываете файл updatemgrlog0.txt. У меня там была вот такая ошибка:

24.07.2019 13:24:07 [SYSERR] [INFO] : Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.PurchaseOrderItem' and the index name 'PurchaseOrderItem_UK1'. The duplicate key value is (7857, Расходные материалы для текущей деятельности).

The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.PurchaseOrderItem'

Из ошибки видно, что у нас есть дублирующиеся записи со значением 7857. Что делаем, восстанавливаем работу вашего ManageEngine ServiceDesk, открываем там раздел с создание запросов и выбираем пункт "Новый отчет по запросу".

Новый отчет по запросу

Пишем там вот такой запрос:

select * from PurchaseOrderItem poi Left Join ComponentDefinition cd On poi.componentid = cd.componentid Left Join ServiceInfo si On poi.serviceinfoid = si.serviceinfoid where PurchaseOrderId = 7857;

Устранение ошибки duplicate key was found

В итоге я получил две записи с одинаковым значением, одну из них нужно будет удалить.

Удаление лишних записей при ошибке duplicate key was found

В базе данных выполните:

delete [servicedesk].[dbo].[PurchaseOrderItem]
where PURCHASEORDERITEMID =7865

Пробуем заново произвести обновление до версии ManageEngine ServiceDesk 10508 и в итоге все успешно завершается. В итоге ошибка с дублированием записей "duplicate key was found" была устранена.

Успешно обновленная ManageEngine 10508

С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org

Автор - Сёмин Иван

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *