Проблема. Информация в профилях пользователей в коллекции узлов не соответствует информации на личном узле пользователя (и, соответственно, в хранилище профилей поставщика общих услуг (Shared Services Provider)). Например, пользователь загрузил новую фотографию, но в доске обсуждений (и в других частях портала, где должна отображаться фотография) она до сих пор старая.

Сначала немного теории. Известно, что в Windows SharePoint Services 3.0 (WSS) профили пользователей локальны для каждой коллекции узлов. Т.е. в рамках коллекции заводится учетная запись пользователя, после чего у него появляется возможность редактировать свой профиль, загружать фотографии и т.п. Если создается еще одна коллекция узлов, то для нее пользователя надо заводить отдельно (и, соответственно, отдельно заполнять профиль). Так же известно, что в Microsoft Office SharePoint Server 2007 источником данных о пользователях является поставщик общих услуг. Он производит загрузку данных в профили из внешних источников (службы каталогов, бизнес-приложений через BDC и т.п.) Казалось бы, что в MOSS все коллекции узлов должны обращаться к SSP для получения данных о пользователях. На самом деле, это не совсем так.

Для каждой коллекции узлов, как и в WSS, профили пользователей хранятся отдельно. При этом периодически происходит загрузка данных из хранилища профилей SSP в профили пользователей коллекций узлов. За этот процесс отвечает задача Profile Synchronization (внутреннее имя profsynch), которая с некоторой периодичностью (примерно раз в 1 час) запускается внутри портальной фермы. Запуском этой задачи занимается служба Windows SharePoint Services Timer (owstimer.exe).

Решение. Итак, что же делать, если профили в коллекции узлов не обновляются?

  1. Подождать. Если пользователь загрузил новую фотографию несколько минут назад, то это изменение вступит в силу в течение часа.
  2. Запустить индексирование контента портала (а точнее, профилей пользователей). В документации я не нашел упоминания об этом, но, судя по всему, профиль должен быть проиндексирован перед тем, как он будет синхронизирован с коллекцией узлов.
  3. Проверить, работает ли служба таймера. Если служба не запущена, синхронизация профилей не проводится.

Если ждать не хочется, можно просто перезапустить службу таймера. В этом случае, задачи, за которые он отвечает, будут выполнены в течение нескольких следующих минут после запуска.