Как уменьшить огромный файл лога транзакций?
Имеется бэкап базы данных. Метод восстановления simple. Размер ldf файла аж 18 Гигабайт. Нужно восстановить его на новом сервере, заодно разобраться с таким непомерным файлом. Каким образом это можно сделать?
- Вопрос задан более трёх лет назад
- 4008 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 2

Помог ответ — не забудь лайкнуть
Я могу ошибаться, но ldf текстовый формат — первое что приходит в голову — заархивируйте.
Дальше, как говорит гугл ldf это файл логов транзакций, именно всех транзакций. Есть мнение что это не нужно для бекапа и переноса. Попробуйте другие методы создания бекапа, чтобы без логов, чисто данные.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Как уменьшить размер файла ldf в sql
База как бы новая — взята копия со старой, удалены документы старые, уже вводятся новые. Почему такой громадный файл лога непонятно, и как от него избавиться? Shrink помог уменьшить размер лога с 106 гигов до 98 гигов. Этого очень мало. Может есть еще какие-нибудь методы?
http://clip2net.com/s/Gipv
Сделай бекап лога
в это картинке написанно что свобно в базе 93 гига. шринкуй далее.
либо меняй. модель бекапа. на смалл( или как его там . а не ФУЛЛ)
потом шринкуй. и.. могешь ее еще реорганизовать ))
(1) не помогло
бэкап и шринк.
зы. когда начнете инструкции читать, а?
(4) о каких инструкцмя речь?
(5) Например, руководство по администрированию SQL-сервера.
Эх, молодежь
В Квери на базе:
backup log ИМЯ_Базы with truncate_only
DBCC SHRINKFILE(ИМЯ_Журнала_log,0)
(7) дело не в том, что «молодежь».
(2) и всё-таки рискнула поставить recovery model: simpe — и задача решилась. Ура!
(6) нету у меня такой штукенции ))) и абсолютно некогда читать. ((( нужно новые базы до нового года подготовить.
(9) до поры до времени.
а что будет после праздников за фото? съемки на полу в гуано? )))
«мужик, ты пилу-то наточи.
-некогда мне, пилить надо. »
(9) рад что помогло . оно всегда помогает с логом ))))
у меня еще правда автошринк стоит . сама режится время от времени .
я просто сталкивался с похожей проблемой в 2002 году )))
Как уменьшить размер файла ldf в sql
Торговля на SQL: база весит 6 Гб, а лог 11,5 Гб. Как этот лог обрезать? Shrink не помогает? Что будет, если просто убить ldf? Будет ругаться или просто создаст новый пустой?
шринк помогает.
Shrink не помогает. пробовал
шринк датабэйс помогает.
Ну говорю же — пробовал. файл остается такого же размера
а ругается хоть?
Так что, поможет ли убийство ldf файла?
(6) нет. процесс проходит нормально, но файл все такой же. ну мож пару мегабайт сбрасывает.
мне помогала чистка журнала регистраций
(9) Т.е. сначала журнал грохнуть, а потом шринк?
Предлагаю сначала грохнуть сисадмина.
Ибо настолько тупы вопросы в тырнете плодятся пачаками..
(0) Резервное копирование базы данных средствами SQL сервера делается?
(0) Для дураков: Recovery mode установите в Simple + ежедневный full backup.
(13) Ну зачем же сразу для дураков? Пусть будет как для нормальных людей Recovery mode — Full. Если будут делать регулярное резервное копирование базы данных и файла транзакций, то все будет в порядке.
(3) Shrink file с явным указанием размера помогает всегда. А вообще — (13), если париться не хочется.
Уменьшение размера журнала транзакций Microsoft SQL Server
Проблема
Рост файла журнала транзакций. С помощью команды DBCC SHRINKFILE не удается
уменьшить размер файла журнала транзакций до нужного размера .
Решение
Для решения описанной проблемы необходимо предварительно удалить неактивные
записи журнала транзакций с помощью команды BACKUP LOG, а затем уже с помощью
команды DBCC SHRINKFILE уменьшить размер файла журнала транзакций.
Последовательность команд, которую нужно исполнить в Query Analyzer, выглядит
следующим образом:
BACKUP LOG Имя_Базы_Данных WITH TRUNCATE_ONLY
go
DBCC SHRINKFILE(Имя_Файла_Журнала_Транзакций)
go
Более подробное описание и рекомендации по использованию этих команд можно найти в документации по Microsoft SQL Server.
(0) Судя по тому, что у вас файл не уменьшается — модель восстановления full и бэкапы журнала транзакций вы не делаете.. Меняйте на simple. Для очистки журнала транзакций используйте команды:
backup log your_database with truncate_only
use [your_database]
dbcc shrinkfile (your_logfile_logical_name, 0, truncateonly)
Логические имя файла можете узнать с помощью
use [your_database_name]
select * from sys.database_files (правда не знаю есть ли в 2000-м такое представление)
Может для начала спросить : А как ты шринк делаешь.
А то, к примеру, сверху в QA база Мастер торчит, а он удивляется, что лог не уменьшается.
Сделай сначала бекап LDF, а потом он уже шринканется
Удаление работает.
Отключи базу от сервака, удали журнал транзакций, подключи. Будет создан новый пустой журнал транзакций.
(21) с дуба рухнул?
—
дуб с маленькой буквы — типа дерево такое )))
Ответил на поставленный вопрос.
Ещё раз скажу: журнал транзакций можно удалить, при присоединении будет создан новый.
В чём проблема, если в данном случае человеку текущий ldf человеку не нужен?
(23) типа и данные не пропадуть? или плевать? ))
Данные в файле данных. Не пропадут.
(25) А при отсоединении базы все незавершенные транзакции будут автоматически «откачены» назад?
(25) хм, я думал в мдф начальные данные + в лдф все изменения
и пока фулл бэкап не сделаешь данные в мдф не переносятся при модели фулл
—
и продолжаю так думать )))
(27) Думай дальше.
(25) Нет, ни в коем случае. После того, как транзакция зафиксирована, она назад не откатится.
(27) Неправильно думаешь
(29) Я немного не то имел в виду. Попробую переформулировать. Данные записываются в mdf файл по чекпойнту, либо лэйзи райтером. При отсоединении БД — данные уже измененные в памяти будут записаны в файл?
(31) Если не дадите пользователю завершить транзакцию (т.е. прервав его сессию), тогда изменения записаны не будут.
(27) и зря Вы так продолжаете думать) В жунале транзакций содержится информация о транзакциях. Активная часть — не зафикисрованные транзакции. Модель восстановления simple не используется для восстановления на определенный момент времени, т.е. данные о зафиксированных транзакциях, условно говоря, удаляются. В модели восстановления full/bulk-logged, информация о зафиксированных транзакциях перестает быть нужной после создания бэкапа журнала транзакций.
(32) Еще раз. Я записал документ и корректно завершил работу с системой. Все изменения были произведены в памяти. Данные будут записаны только по чекпойнту, либо lazy writer’ом. Вы уверены, что при отсоединении БД, будет вызван чекпойнт или запустится lazy writer?
«При перезапуске, служба SQL Server использует журнал транзакций для обнаружения завершенных транзакций, которые внесли изменения в данные, но не были записаны на диск и незавершенных транзакций» (http://www.sqlservercentral.com/articles/64582/ — пруфлинк, четвертый абзац раздела «How does SQL use the log?»)
(32) Просто метод аттача без журнала какой-то «варварский» :). Я понимаю его необходимость при переносе базы и повреждении ldf-файла, но для очистки журнала.
Уменьшение размера БД MS SQL, в случае большого .ldf файла
Если в MSSQL для БД включена полная модель восстановления (свойства базы) файл ldf может вырастать большими темпами и занимать практически все дисковое пространство. Одно из возможных решение (успешно опробованное):
1. Деаттачим базу.
2. Переименовываем файл ldf.
3. Аттачим базу с помощь хранимой процедуры следующим образом:
EXEC sp_attach_single_file_db @dbname = ‘имя_базы’,
@physname =
N’D:\MSSQL\DB\имя.mdf’;
В итоге получаем сообщение:
Сбой при активации файла. Возможно, физическое имя файла «D:\MSSQL\DB\имя.ldf» неправильное.
Создан новый файл журнала «D:\MSSQL\DB\имя_log.LDF».
Создается новый файл ldf размером в 1Мб.