Ознаки
Розглянемо такий сценарій:
-
У вас є середовище SharePoint Server 2010 із застосунком-службою робочого профілю користувача
-
Ви не інсталювали накопичувальне оновлення за Серпень 2010 або пізнішої для SharePoint Server 2010
-
Ви від'єднали та приєднали базу даних вмісту, яка містить кілька колекцій сайтів.
У цьому сценарії після приєднання бази даних до її веб-застосунку, відомості про членство деяких колекцій сайтів змінюються та не відображаються на вкладці "членство" в розділі "мій профіль" для постраждалих користувачів. Інформація про приналежність, яка відображається для користувачів, буде застарілою.
Причина
Корпорація Майкрософт визнає це питанням про продукт, що стосується очищення колекцій сайтів, зафіксованого в сукупному оновленні за Серпень 2010 для SharePoint 2010 (пакет сервера KB 2352342 ). Однак це виправлення не впливає на колекції сайтів, які ви знайшли в цьому стані, від'єднання баз даних до інсталяції виправлень. Щоб відновити синхронізацію учасників для таких постраждалих колекцій сайтів, виконайте вказівки з вирішення.
Спосіб вирішення
Виконайте вказівки, описані нижче, щоб відновити синхронізацію відомостей про членство між базою даних вмісту та базою даних профілів для всіх колекцій сайтів.Попередження:
-
Під час цієї процедури всі поточні відомості про членство в групі SharePoint буде видалено з бази даних профілів, а користувачі не зможуть переглянути відомості про їх повну "членство", доки не буде виконано обробку всіх колекцій сайтів.
-
Під час виконання наведених нижче завдань таймер має бути вимкнуто: "{профіль користувача в службі SharePoint}", у якому виконується служба "повна синхронізація", де {Upa} – це ім'я застосунку-служби профілю користувача.
Відкрийте оболонку керування SharePoint 2010 на комп'ютері, на якому розміщено Центр адміністрування як локальний адміністратор, який також є учасником групи "адміністратори ферми", і має дозволи "повний доступ" в застосунку-службі профілів користувачів. замініть URL-адресу в першому рядку цього фрагмента сценарію PowerShell до однієї з відповідних колекцій сайтів (цей фрагмент коду потрібно виконати лише один раз і видалить поточні групи учасників із застосунку профілю користувача)
$url = "http://server/sites/sitecoll";$SPSite = get-spsite $url;$context = [Microsoft.SharePoint.SPServiceContext]::GetContext($SPSite)$manager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager $context$sourceMethod = [Microsoft.Office.Server.UserProfiles.MemberGroup].getmethod("get_Source")$deleteMethod = [Microsoft.Office.Server.UserProfiles.MemberGroup].getmethod("Delete")foreach ($memberGroup in $manager.GetMemberGroups()){ if ($sourceMethod.Invoke($memberGroup, @()) -eq "SharePointSite") { $deleteMethod.Invoke($memberGroup, @()) } }
Після завершення цього сценарію PowerShell виконайте таку команду, щоб запланувати нову синхронізацію для баз даних вмісту.
Stsadm -o sync -deleteolddatabases 0
Тепер виконайте наведені нижче сценарії PowerShell, щоб запланувати "повну синхронізацію для членства" всіх колекцій сайтів у фермі. Get-SPSite-обмежити всі | % {[Microsoft. Office. Server. UserProfiles. WSSProfileSynch]:: ScheduleSiteForFullSynchronization ($ _); $ _. Закрити ()} опублікувати це, виконайте наведені нижче дії.
-
Відкрийте Центр адміністрування, натисніть кнопку "Переглянути визначення завдання" в розділі "моніторинг"
-
Знайдіть роботу таймера "{Upa} профіль користувача до повної синхронізації SharePoint", де {Upa} – це ім'я застосунку-служби профілю користувача.
-
Клацніть заголовок завдання та натисніть кнопку "виконати зараз".
-
Після завершення завдання відомості про членство буде оновлено та буде синхронізовано автоматично під час подальшого виконання для раніше постраждалих колекцій сайтів.
Додаткові відомості
Планування синхронізації профілю (сервер SharePoint server 2010) таймера (SharePoint Server 2010)