Через некоторое время эксплуатации SharePoint Server 2013 можно заметить значительное увеличение размера файла данных БД WSS_UsageApplication. В эту БД собираются данные об использовании разных компонент SharePoint, и в зависимости от увеличения интенсивности их использования, рост базы будет неизбежен, что само по себе в некоторых ситуациях может оказаться неприятным сюрпризом.
Посмотрим на то, как можно повлиять на данную ситуацию.
Изменением состава логируемых компонент можно управлять на веб-узле Центра администрирования (Central Administration > Monitoring > Configure usage and health data collection)
Здесь можно включить или выключить как полностью весь сбор данных, так и отдельно взятых компонент…
Если по каким-то причинам нет желания полностью отключать сбор данных, то можно подумать о том, как уменьшить объём собираемых данных. Например можно проанализировать то, какого рода данных больше всего попадает в БД WSS_UsageApplication. Для этого можно воспользоваться встроенным функционалом отчётности SQL Management Studio.
Откроем контекстное меню на базе данных и выберем пункты Reports > Standard Reports > Disk Usage by Top Tables
Как видим, в нашем примере больший объём данных составляют записи TaskUsage
Откроем на веб-сервере SharePoint 2013 Management Shell и посмотрим настройку периода хранения собранных событий разного типа..
Get-SPUsageDefinition | Format-Table –AutoSize
Как видим, для интересующего нас типа событий, впрочем как и для всех остальных, период хранения собранных данных по-умолчанию составляет 14 дней. Соответственно, чтобы снизить объём хранимых данных, мы можем уменьшить количество дней хранения для отдельного типа событий:
Set-SPUsageDefinition -Identity "Task Use" -DaysRetained 3
При желании сократить количество дней хранения для всех типов событий используем команду:
Get-SPUsageDefinition | ForEach-Object { Set-SPUsageDefinition $_ –DaysRetained 3}
Теперь, чтобы задействовать изменения конфигурации, запустим стандартную задачу обработки данных сбора, которая усечёт все события старше заданного нами количества дней. Сделать это можно на веб-узле Центра администрирования (Central Administration > Monitoring > Configure usage and health data collection > Log Collection Schedule)
В списке заданий обработки событий использования откроем задание Microsoft SharePoint Foundation Usage Data Import и выполним его запуск…
Успешность выполнения задания можно проверить по ссылке Job History
Аналогичную процедуру можно проделать и с помощью SharePoint 2013 Management Shell :
Get-SPTimerJob | Where-Object { $_.title -eq "Microsoft SharePoint Foundation Usage Data Import" } | Start-SPTimerJob
Хотя, учитывая установленный по-умолчанию интервал выполнения задания в 5 минут, позволяет и не выполнять данный шаг, а просто немного подождать, когда задание выполниться автоматически по расписанию.
В результате при последующей попытке сокращения неиспользуемого места базы данных с помощью Shrink Database, мы должны увидеть значительный объём, доступный к сжатию.
Источники информации:
Справедливо для SharePoint Server 2016/2019 с оговоркой на то, что при указании RetentionPeriod нужно учитывать, что значение не должно быть меньше, чем DaysToKeepDetailedData.
Например, чтобы установить период в 3 дня (по умолчанию 7 дней):
Get-SPUsageDefinition | ForEach-Object { Set-SPUsageDefinition $_ -DaysRetained 3 -DaysToKeepUsageFiles 3 }