Иногда списки SharePoint незаметно разрастаются и в один прекрасный момент при обращении к ним можно получить вот такое сообщение об ошибке:
Операция, попытка выполнить которую осуществляется, запрещена, поскольку она превышает пороговое значение представления списка, принудительно установленное администратором.<nativehr>0x80070024</nativehr><nativestack></nativestack>
А пользователям данные нужны сию секунду. Что делать?
Если вы столкнулись с такой ошибкой, то есть несколько вариантов исправления. Единого метода борьбы предложить не получится, потому описываю подход для решения проблемы.
- В первую очередь советую перейти в «Свойства списка» -> «Настройка навигации для метаданных» и тут пересмотреть «Доступные поля ключевых фильтров». Смена вариантов полей может помочь с решением проблемы.
- Если это не помогло, то, как временное решение, нужно изменить значение порогового значения представления списка. Это может сделать администратор SharePoint из центра администрирования или PowerShell.
Изменение порогового значения представления списка из центра администрирования осуществляется следующим способом:
Перейти в Управление приложениями -> Управление веб-приложениями, выделить нужное приложение, в риббоне вызвать на кнопке «Общие параметры» выпадающее меню и выбрать пункт «Регулирование ресурсов» (Рис.1).
В открывшемся окне в пункте «Пороговое значение представления списка» установите значение с запасом.
Изменение порогового значения представления списка с помощью PowerShell:
Нужно запустить такой скрипт PowerShell:
#Connect Snappin for SharePoint if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) { Write-Host "Connect to Sharepoint Snapin" Add-PSSnapin Microsoft.SharePoint.PowerShell } $sitecollection = Get-SPSite http://sharepointdev $sitecollection.WebApplication.MaxItemsPerThrottledOperation = 10000 $sitecollection.WebApplication.Update()
Вне зависимости от выбранного метода, оставлять увеличенное значение порогового значения представления списка на долгое время нельзя, т.к. возрастет нагрузка на приложение, что может в конечном итоге вызвать дэд-локи в базе данных. После увеличения значения порогового значения представления списка необходимо удалить лишние записи или перенести в архив. Под архивом понимается отдельный список для временного хранения данных или экспорт данных в базу данных. После чего вернуть предустановленное Microsoft'ом значение 5000.
Хочу отметить, что SharePoint – не заменитель баз данных, а, в первую очередь, средство для оперативной работы. Это никак не средство для хранение огромных архивов. В идеале, архивные данные SharePoint (если они вообще нужны) нужно переносить в базы данных (MSSQL или даже Access).