Я заметил в SharePoint 2010, что если вы измените sAMAccountName пользователя после того, как пользователь вошел в семейство сайтов SharePoint, поле tp_Login в таблице UserInfo не обновляется. У него все еще есть старый идентификатор пользователя.
Хотя пользователь может войти в SharePoint под новой учетной записью, эти новые учетные записи не обновляют таблицу. У меня есть код, который смотрит на SPUser.LoginName, и это значение похоже на значение поля tp_Login, которое теперь устарело. Тот факт, что это значение устарело, приводит к сбою моего кода.
Я подозреваю, что это поведение идентично в SharePoint 2007.
Есть ли способ заставить SharePoint распознавать новое имя sAMAccountName? Я подозреваю, что синхронизация профилей может помочь, но я бы хотел, чтобы мое решение работало с WSS 3.0 и SharePoint 2010 Foundation.
Я рассматривал возможность обновления таблицы базы данных вручную, но хотел бы придерживаться поддерживаемых подходов.
Это должно решить эту проблему за вас. Он должен запускаться от имени администратора sharepoint. Раньше я обнаруживал, что это работает не во всех сценариях, и что иногда команде разработчиков sharepoint приходилось исправлять пользователей вручную.
stsadm.exe -o migrateuser -oldlogin -newlogin [-ignoresidhistory]
Когда я попробовал следующую команду
stsadm.exe -o migrateuser -oldlogin Имя домена \ Oldusername -newlogin Имя домена \ Newusername –ignoresidhistory
Я получил ту же ошибку:
«Значение не может быть пустым. Имя параметра: userProfileApplicationProxy»
Однако, если я проигнорировал эту ошибку и протестировал ее, все прошло успешно.