Для реализации печати счетов с логотипаим подразделений было добавлено новое поле в вышеуказанную таблицу. В тестовой БД проблем не возникало, счета печатались, как положено, с логотипами подразделений.
В рабочей БД первым делом обновлял (через "загрузить из файла") таблицу tbl_Account. И тут возникли проблемы :
Я подумал, что ошибка в данных. Сделал выборку OwnerID-AccountName и увидел, что у аккаунта LICENSE_MANAGER, не заполнено поле OwnerID. Я переработал скрипт создания этого пользователя с тем, чтобы он, при обновлении, записывал в поле OwnerID значение ID контакта, который так же создается этим скриптом.
Это сработало следующим образом: предыдущей ошибки не выводилось, но выводилось следующее:
Тогда я вовсе удалил Аккаунт LICENSE_MANAGER, а потом и его контакт. Однако, это ничего не изменило.
В Trace на предмет ошибок, выдается следующее:
Как локализовать и устранить ошибку, чтобы успешно обновить сервис?
Нравится
Текст ошибки говорит о том, что при создании внешнего ключа возник конфликт.
Скорее всего в этом поле есть значения, которые ссылаются на несуществующий ID
в таблице контактов.
Самое простое решение - очистите это поле для всех записей
предыдущий совет натолкнул меня на мысль. Вместо того чтобы очистить поле OwnerID в массовом порядке, в блоке try..catch инициировал перезапись всех записей таб. tbl_Account, с выводом ошибок в лог. В результате получил проблемную запись, которая имела несуществующий ID в поле OwnerID.
Добрый вечер, Андрей!
Рад что у Вас все получилось. На будущее при решении подобных задач можно посоветовать следующий способ - для определения и исправления проблемных записей можно выполнить в QueryAnalyzer всего один запрос:
update tbl_Account set OwnerID = null where not exists (select ID from tbl_Contact where tbl_Contact.ID = tbl_Account.OwnerID)
Желаю успехов!