Как ограничить рост 1с журнала транзакций 1С+MS-SQL?
Очень часто в форумах слышатся жалобы, что журнал транзакций в базе данных достиг размера, в разы, превышающего размер самой базы данных. Как же его можно ограничить?
Очень просто. Для этого:
- Открываем Enterprise Manager , находим там наш сервер и нашу базу данных, включаем свойства базы данных.
- Переходим на закладку « Options ».
- Выставляем опцию Recovery model в режим « Simple ».
- Ставим отметку в поле « Auto shrink ».

Режим « Simple » — служит для того, чтобы полностью отказаться от идеи хранения лога транзакций. Как только транзакция завершена со статусом «Успешно», лог по ней удаляется, но размер файла при этом не меняется. А вот, собственно, « Auto shrink » делает обрезку файла до размера содержащейся в нем информации.
На особо нагруженных базах не рекомендуется устанавливать опцию « Auto shrink », так как урезка лог файла создает дополнительную нагрузку на сервер. В любом случае, урезать лог файл можно и вручную. Для этого открываем Enterprise Manager , находим там наш сервер и нашу базу данных, по ней щелкаем правой кнопкой мыши и из выпадающего контекстного меню выбираем « Shrink Database. ».

Далее, нам откроется диалоговое выбора режима сжатия.

Красным отмечен очень интересный пункт. Эта опция позволяет не только обрезать лог и сжать файл данных, но и переупорядочить даные на страницах, путем более плотного их размещения. Размер базы данных может значительно уменьшиться для тех баз, где давно не выполнялось это действие.
Как уменьшить размер log файла sql 1с
Два примера того, как возможно сократить журнал (уменьшить лог) транзакций СУБД SQL (файл *.ldf) для корректной работы 1С 8.
Чаще всего потребность в данной операции возникает из-за переполнения журнала транзакций и откаже корректной работы базы 1С 8. Сопровождается ошибкой: «Журнал транзакций для базы данных переполнен». Причина: «LOG_BACKUP»
Запускается SQL Server Management Studio. В ветке «Базы данных» дерева «Обозревателя объектов» находим базу данных по названию. Вызываем контекстное меню и в нем выбираем пункт «Создать запрос» и вводим текст:
ALTER DATABASE [name_db] SET RECOVERY SIMPLE
DBCC SHRINKFILE ([name_db], 50);
ALTER DATABASE [name_db] SET RECOVERY FULL
, где [name_db] — имя (название) базы данных СУБД. В примере — «Бухгалтерия».

Но этот способ не всегда может сработать. Опустим причины и попытки разобраться и заставить работать этот метод. А перейдем к способу, который является интерактивным выражением уже представленного.
Правой кнопкой мыши на базе вызываем меню и переходим в свойства базы. Переходим на страницу «Параметры».
Нажатие на изображении увеличит его 
На странице «Параметры» для «Модели восстановления» выбирается значение «Простая». Запоминаем исходное значение, скорее всего это «Полная». Нужно будет потом вернуть это значение для модели восстановления.

Это была небольшая подготовка. Теперь выполним непосредственно сжатие (шринк) журнала (лога) транзакций. Для этого вызываем контекстное меню правой кнопкой мыши для базы. В подменю «Задачи» выбираем подменю «Сжать», в нем пункт «Файлы».
Нажатие на изображении увеличит его 
В открывшемся окне устанавливаем «Тип файла» — «Журнал». В «Операция сжатия» выбирается вариант «Реорганизовать страницы, перед тем освободить неиспользуемое место». И указывается новое значение размера файла журнала транзакций в поле вводе «Сжать файл до:». Указать приемлемый размер лога. Нажимается кнопка «ОК».

После выполнения операции сокращения вернем «Модель восстановления» в исходное значение «Полная»

Сжатие файла лога транзакций MS SQL
Чаще всего к этому методу прибегают, когда MS SQL не настроено ограничение по размеру файла лога и отсутствуют планы обслуживания в результате чего на диске заканчивается место, а решить проблему необходимо срочно. Для этого нам нужно уменьшить распухший *.ldf файл. В этом нам поможет инструмент сжатие (shrink).
Пункт 1. Модель восстановления
Устанавливаем модель восстановления простая (simple). ПКМ на базе / свойства (properties) / параметры (options) / модель восстановления (Recovery model) / простая (simple) / OK.

Открываем свойства базы данных

Выбираем модель восстановления — простая
Пункт 2. Сжатие лога транзакций
Сжимаем лог транзакций. ПКМ на базе / задачи (tasks) / сжать (shrink) / файлы (files) / установить тип файла (file type) / Журнал (log) / в операция сжатия (shrink action) / Реорганизовать страницы, перед тем осводить неиспользуемое место (reorganize pages before releseasing unused space) / сжать файл (shrink file to) / указать приемлемый размер лога.

Сжать файл лога транзакций.

Сжимаем до 0 Мб
Пункт 3. Меняем модель восстановление на изначальную
ПКМ на базе — свойства (properties) — параметры(options) / модель восстановления (recovery model) / полная (full) / OK

Выбираем модель восстановления — полная
Пункт 4. Сжатие файла лога транзакций MS SQL через запрос Transact-SQL
Также мы можем сжать раздувшийся лог транзакция через SQL запрос (Transact-SQL)
Нажимаем кнопку Создать запрос , вставляем туда код запроса (только укажите имя свой базы данных) и выполняем запрос по нажатию на кнопку Выполнить .
USE ИМЯ_БАЗЫ GO ALTER DATABASE ИМЯ_БАЗЫ SET RECOVERY SIMPLE; GO DBCC SHRINKFILE (2, 1); GO ALTER DATABASE ИМЯ_БАЗЫ SET RECOVERY FULL; GO

Сжатие лога транзакции 1с в mssql через скрипт Transact-SQL
Внимание: данный способ не решает проблему, а снимает симптом. Рекомендую настроить максимальный размер лога и план обслуживания бд.
Автору на кофе ☕ или просто поднять мотивацию писать больше статей для вас !
Отдельное спасибо всем, кто отправляет донатики ! Очень приятно и неожиданно. Благодаря вам сайт может и в дальнейшем обходиться без рекламных баннеров.
- В начало
- Модель восстановления
- Сжатие лога транзакций
- Меняем модель восстановление на изначальную
- Сжатие файла лога транзакций MS SQL через запрос Transact-SQL
- Комментарии
Канал изначально создавался как кладовая мемов, но настал момент и я решил поделиться им.
Думаю это может быть вам интересно.
Буду рад видеть всех
Как уменьшить размер лог-файла
× Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. Gennadiy83 08.09.15 02:31 Сейчас в теме
Добрый день! Клиент-серверный вариант БД. Сервер MS SQL Server 2012, конфигурация УТ11. Лог-файл в несколько раз больше файла БД. Подскажите как уменьшить размер файла? В файловом варианте все просто, а как быть в данном случае не пойму, вычитал различные варианты на форумах (как понял, необходимо выполнить truncate запрос), но экспериментировать страшно. Из конфигуратора попытался сократить лог-файл, операция выполняется быстро, но сиквел не уменьшает сам файл и не возвращает память системе. Всем спасибо за помощь.