Как уменьшить размер лог файла базы данных SharePoint 2013
Все началось с того, что перестал работать backup фермы SharePoint 2013. На этом моменте я завис на какое-то время, не мог понять в чем же причина. Скрипты в планировщике не менялись, задания планировщика запускаются, но резервное копирование не выполняется. В логах была ошибка, что на диске не хватает свободного места. Места на дисках было достаточно, поэтому я списал на привередливость SharePoint, которому нужно всегда свободного места с запасом.
Причина стала явной только после ручного запуска резервного копирования фермы SharePoint 2013. Где в сообщении был указан примерный размер резервной копии – 103 гигабайта! Хотя, все предыдущие бэкапы занимали не более 30 гигов.
Первая мысль была, что злы пользователи залили на портал 70 гигов данных, которые придется как-то выявлять и удалять. Пошел на SQL сервер смотреть размер баз данных.
Оказалось, что я зря грешил на пользователей – они не виноваты. Такой большой объем заняли лог-файлы двух баз данных — SharePoint_Config и WSS_Content_Portal. В сумме эти два лог-файла заняли почти 90 гигабайт!
Так дело не пойдет, место надо освободить. Для этого запускаем SQL Server Management Studio на SQL сервере.
Раскрываем список баз данных, выбираем первую базу с большим логом, щелкаем по названию этой базы правой кнопкой мыши, и в контекстном меню выбираем Tasks –> Shrink –> Files.
В открывшемся окне проверяем, чтобы был выставлен параметр Release unused space, жмем ОК.
Проверяем размер лог-файла базы данных. Если он не изменился, а у меня он не изменился, то переходим к следующим пунктам.
Сделаем резервную копию лог-файла базы данных. Для этого жмем кнопку New Query и вводим следубщую команду:
BACKUP LOG [SharePoint_Config] TO DISK='E:\Backup.bak' GO
где SharePoint_Config — это имя базы данных, у которой уж слишком большой лог-файл. Указываем путь, куда будет сохранена резервная копия. На диске должно быть достаточно свободного места. И жмем кнопку Execute.
Резервное копирование у меня закончилось ошибкой:
Msg 3201, Level 16, State 1, Line 1 Cannot open backup device 'E:\Backup.bak'. Operating system error 5(Access is denied.). Msg 3013, Level 16, State 1, Line 1 BACKUP LOG is terminating abnormally.
Причиной было отсутсвие прав на запись на диск E:\ у учетной записи, под которой работает SQL Server. В моей случае это domain\shpsql. Узнать это можно в списке служб Windows.
Дал права доступа на изменение (Modify) учетке domain\shpsql на диск E:\ и снова нажал кнопку Execute. Во второй раз резервное копирование выполнилось без ошибок (скриншот уже от второй базы данных).
Получил два файла бэкапа на 82 гигабайта в сумме.
Далее меняем Recovery model в свойствах базы данных с Full на Simple.
Создаем новый запрос (кнопка New Query) и вводим следующую команду:
DBCC SHRINKFILE('WSS_Content_Portal_log',50)
где WSS_Content_Portal_log – название лог-файла соответсвующей базы SharePoint_Config_log.ldf. Цифра 50 означает размер лог-файла в мегабайтах. Для успешного выполнения команды у учетной записи, под которой зашли на сервер, должна быть роль sysadmin. Жмем Execute.
На скриншоте снизу показан результат успешного выполнения команды.
Возвращаем Recovery model базы данных в Full (можно сделать и через UI – разницы нет).
В результате лог-файлы стали по 50 мегабайт.
А резервная копия стала нормального размера.
Нашли опечатку в тексте? Пожалуйста, выделите ее и нажмите Ctrl+Enter! Спасибо!
Хотите поблагодарить автора за эту заметку? Вы можете это сделать!