Уменьшение размера логов баз SQL
Чаще всего логи хранятся в файле .ldf рядом с файлом базы данных. Если в настройках базы данных нет ограничения на размер логов и используется полная модель восстановления, то файл логов может разрастаться до очень больших размеров и тогда его нужно очистить.

Заходим в SQL Server Management Studio, подключаемся к нужному серверу, выбираем нужную базу и открываем для неё форму свойства в контекстном меню и в разделе “Параметры” меняем модель восстановления на простую.
Закрыв форму “Свойства”, выбираем в контекстном меню базы “Задачи”-“Сжать”-“Файлы”

В появившийся форме выбираем тип файла “Журнал”, и в настройках операций сжатия пункт “Реорганизовать страницы, перед тем как освободить”. Если в пункте “Сжать файл” установить 0, тогда накопившиеся на момент сжатия логи будут удалены.

При необходимости, возвращаем обратно модель восстановления данных “Полная”.
В продолжение темы, рассмотрим удаление неиспользуемых журналов регистрации из папки Srvinfo Сервера Предприятия 1С.
Для каждой базы данных 1С существует своя директория хранения журнала регистрации и выглядит она таким образом
C:\Program Files\1cv8\srvinfo\\\1Cv8Log

После удаления базы данных с сервера 1С папка журнала регистрации не удаляется из Srvinfo. Поэтому из множества папок в Srvinfo могут находиться и те, которые давно не используются и просто занимают место на жестком диске. Вычислить эти папки можно открыв файл 1CV8Clst.lst, который находится так же в reg_1541.
Копируем Идентификатор базы на сервере> из папки Srvinfo и ищем в файле 1CV8Clst.lst. Если идентификатор в файле не найден, то папку можно удалять.

В директории Srvinfo находится папка с названием вида snccntx+. Эта папка содержит сеансовые данные и ее лучше не удалять без необходимости, да и много места она не занимает.
Быстро растет база MS SQL
Очень часто это связано с тем, что очень быстро увеличивается LOG-файл базы данных MS SQL.
Для того, чтобы понять причины быстрого роста необходимо понять вообще зачем нужен этот LOG-файл. Давайте рассмотрим структуру файлов, попытаемся сделать это упрощено.
Любая база данных MS SQL содержит файлы с двумя расширениями *.mdf и *.log.
MDF-файл — это файл с данными. Содержит сведения, необходимые для запуска базы данных, и ссылки на другие файлы в базе данных. Их может быть несколько.
LOG-файл — это файл журнала транзакций. Файлы журнала транзакций содержат сведения, используемые для восстановления базы данных. Для файлов журнала транзакций рекомендуется расширение LDF. LOG-файлов может быть несколько.
Справедливости ради, еще выделяют и NDF-файлы, но при работе в 1С они не используются (вторичные файлы данных, являются не обязательными).
Как это работает
Теперь рассмотрим как работает запись в БД MS SQL.
Сервер 1С:Предприятия записывает данные в mdf-файл(ы) и параллельно все транзакции связанные с изменением данных в mdf фиксируются в журнал транзакций или log-файл(ы). Причем если по какой-то причине в базе данных произойдет сбой, log-файл поможет нам восстановить данные практически на любой момент времени.
Важно понимать, что в самих log-файлах нет данных, там фиксируются ТОЛЬКО транзакции (действия). Грубо говоря запросы, которые изменяют данные в MDF. Упрощенно, это «тетрадь» куда записываются все изменения (добавления, изменения, удаления) в таблицах базы данных.
Все, конечно, гораздо сложнее, но тут мы приводим упрощенную схему.
Имея такую «тетрадочку» с логом транзакций можно «листать» изменения и добиться того, что система может «откатиться» на нужное время.
Почему растет LOG-файл (ldf)?
Понятное дело, что если записываются все изменения то лог-файл просто обязан расти. Всякие фоновые задания, которые пишут по одной записи в какой-нибудь регистр в 1С делают изменения в данных, а следовательно, растет размер лога. Причем, чем больше изменений, тем больше растет ldf-файл. А такая операция, как обновление информационной базы часто ведет вообще к огромному росту, так как при обновлении информационной базы происходит много изменений в данных и это все фиксируется.
Так же на размер файла транзакций влияет и интенсивность работы пользователей. Если мы открываем один и тот же документ и каждый раз меняем один реквизит и записываем документ, то в mdf-файле ничего изменяться не будет, а вот в файле транзакций, будет 10 записей с транзакциями, каждая из которых что-то меняет.
В MS SQL возможно использование нескольких моделей восстановления данных. Это, собственно, механизм, который и отвечает за журнал транзакций.
Полная модель восстановления (Full) — фиксируются ВСЕ транзакции. При этой модели будет максимальный рост журнала транзакций, но при этом риска данных журналов практически нет.
С неполным протоколированием — похожа на полную модель восстановления, но уменьшает место, занимаемое журналами, за счет неполного протоколирования большинства массовых операций. Возможно восстановление до конца любой резервной копии.
Простая модель (Simple) — данные по журналам практически не фиксируются.
Посмотреть на вашу модель можно открыв Microsoft SQL Server Managment Studio, щелкнув на нашу БД правой кнопкой:
Методы борьбы с размерами файла транзакций MS SQL
Итак, проблема ясна. Есть большой файл(ы) транзакций, необходимо что-то с этим делать. Так как серверные жесткие диски не всегда имеют возможность хранить логи терабайтами. Есть несколько способов борьбы с большим размеров логов.
SHRINK (сжатие) лога транзакций
В простонародье это «шринк» файла. Это «обрезка» файла и удаление оттуда данных транзакций. Действительно, если журнал транзакций нам нужен только при возникновении сбоев, может имеет смысл настроить частое резервное копирование, а лог транзакций вообще отключить? Это возможно.
Шаг 1. Сжатие log-файла
Откроем Microsoft SQL Server Managment Studio и «сожмем» log-файл.

После этого откроется окно:

Тут можно подобрать нужные параметры сжатия и освободить используемое место журнала транзакций. При этом ваши данные в базе данных никак не пострадают. Здесь мы имеем дело исключительно с журналом транзакций и как мы сказали выше, база данных вообще может обойтись без журнала в простой модели протоколирования, а значит очистка это вполне нормально.
Шаг 2. Переключение на простую модель восстановления
Если вы хотите на корню решить вопрос с ростом логов, то вы можете переключить модель восстановления на простую (Simple). На самом первом скриншоте выше, переключите модель на простую и нажмите OK.
Так же возможно выполнения вот такого запроса:
USE [TestUIT] BACKUP LOG [TestUIT] TO DISK='NULL' GO DBCC SHRINKFILE ([TestUIT_log], 1) GO
Этот способ наладить работу с размером логов имеет как плюсы (быстро и навсегда решает проблему роста логов), так и минусы. Например, вы теряете возможность оперативно откатывать изменения.
Важно, что речь не о полных бэкапах, а именно когда речь идет о восстановлении по данным журнала транзакций. Как пример, бэкап был вчера, а сегодня после обеда, когда было внесено 50 документов, вы случайно очистили важный документ и хотите вернуть его. Это можно сделать с помощью логов.
Некоторые считают такой метод, не верным и отчасти это так, но если вы и раньше не пользовались восстановлением данных по данным журнала транзакций, то я не думаю, что это вообще проблема для вас 🙂
Создание резервных копий журнала транзакций
Кроме способа описанного выше в MS SQL есть возможность создавать резервные копии журнала транзакций. Это можно сделать из Microsoft SQL Server Managment Studio:

А следующим шагом:

Важно! Делая бэкап журнала транзакций мы усекаем его. MS SQL понимает, что копия журнала сделана, а значит можно уменьшить размер log-файла.
Это же самое можно выполнить запросом:
BACKUP LOG TestUIT TO DISK = 'C:\Backups\Logs\TestUIT.TRN' WITH STATS GO
Плюсы второго вариант очевидны, вы всегда можете восстановить данные (надо вам сделать эксперименты самостоятельно с этим), написать скрипт, который может это сделать автоматически. При этом после каждого бэкапа размер журнала транзакций будем сокращен. Если вам не нужно, вы всегда можете использовать первый вариант и простую модель восстановления БД.
Вот такие дела, друзья.
Всем удачи и берегите ваш MS SQL!
Барилко Виталий
Основатель и директор по развитию Софтонит. Практикующий руководитель разработки. Эксперт в области автоматизации техподдержки
Как почистить логи sql

Уменьшить Ldf (Log) файлов в SQL Server 200
штатная процедура чистки логов — в MS SQL Server Management Studio Express создаем новый запрос к требуемой базе
BACKUP LOG [kk_smb] WITH TRUNCATE_ONLY
DBCC SHRINKFILE(2, TRUNCATEONLY)
,где kk_smb — имя вашей базы
Лог файл с 10Гб урезается до 10Мб). Каким образом почистить логи sql базы 1с 8.1 бухгалтерия.
Как вариант можно использовать вот такой скрипт.
USE ;
GO
— Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE
SET RECOVERY SIMPLE;
GO
— Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (_Log, 1);
GO
— Reset the database recovery model.
ALTER DATABASE
SET RECOVERY FULL;
GO
Как очистить лог файл MS SQL?

Советов очень много, от и до… до написания скрипта из SQL запросов на три страницы. Однако никто или не может или кто-то не хочет делать, а как известно, пока сам не сделаешь — ни кто за тебя делать не будет. Многие читатели спрашивают: Как очистить лог файл MS SQL? Лично я тоже «попался» как алёша на слове SHRINKFILE — и это меня привело не туда. А задача решалась очень просто. Ошибка 1 в строке 2… и всё без толку. В новом MS SQL 2008 Stanrard в обще не работает и ругается. Написана масса отзывов и масса советов. Но ни один не помогает. Все умные стали, а на простом примере никто помочь реально не может. Вот я и решил докопаться до истины: как очистить лог. Открываем: MS SQL Studio 2008. Подсоединяемся. Открываем нужную Базу. Кстати, по-умолчанию обычно стоит, когда вы ставите Базу стоит full бакап. Нажимаем выполнить запрос:
USE master;
ALTER DATABASE Ваша_БД SET RECOVERY SIMPLE;USE Ваша_БД;
DBCC SHRINKFILE (Ваша_БД_log, 100, TRUNCATEONLY);
И всё просто. Просто вопрос: как? — простой ответ в две строчки! Таким образом база переводится в simple и лог делается по каждые 100 записей с очисткой таблицы логов. Как-то так. Мне лично помогло!
