Подскажите, плиз, как на MS SQL Server 2008 R2 настроить автоматическую обрезку лога?
Я понимаю, поиск нынче не в моде, поэтому даю ссылку. Вот хорошая статья на тему, в ней есть не только примеры "как", но и объяснение "почему". Букв конечно много, но есть и картинки ;).
П.С.: Рекомендую к прочтению и всем тем, кто советует сменить режим восстановления на простой или предлагает шринковать.
(1) Kutuzov, Два варианта:
1) (2) - здесь написали!
2) Зачем тебе полное восстановление в SQL (измени на Простая и не будет у тебя пухнуть журнал лога)!?
переведи базу в режим восстановления симпл и сделай шринк лога.
(2) MerlinVVV, ну это как бы не фонтан - гонять базу из фулл в симпл и обратно.
вообще, если вы не знаете чем отличается фулл от симпл, ставьте симпл и не будет проблем с ростом логов.
если бекап каждый день и в случае сбоя для вас подходит восстановление но момент бекапа (т.е. утеря данных с момента последнего бекапа до сбоя), то симпл ставьте.
(6) Armando, места может много занимать. у меня распух до 300 Гб.
перевел базу в симпл, обрезал лог и теперь спокойнее.
не надо париться с обрезкой.
в ссылке, которую я приводил, написано как я решил свою проблему.
(1) Kutuzov, ответьте пожалуйста на следующие вопросы:
0) Знаете ли Вы, в каком режиме восстановления работает Ваша база?
На всякий случай, инструкция для ответа на этот вопрос:
В русскоязычной "Среда SQL Server Management Studio" правой кнопкой по нужной базе данных, Свойства, в вертикальной вкладке "Параметры", строка "Модель восстановления:" - что там указано?
Если не "Простая", то Вам следующие два вопроса:
1) Вас устроит делать резервную копию ВСЕЙ базы один раз в день (или чаще, или реже, зависит от размера базы и размера и скорости хранилища резервных копий)?
2) При этом, устроит ли Вас, что в случае сбоя, восстановить базу можно будет только до её состояния на момент начала резервного копирования?
Если ответ на оба вопроса - да, то можно перевести базу в "Модель восстановления: Простая" (в том-же месте SQL Server Management Studio, затем нажать Ок, конечно же), после чего уменьшить размер [каждого] файла лога (перейти в верт. вкладку "Файлы", и для файла "ИМЯБАЗЫ_log" уменьшить значение столбца "Начальный размер" до чего-нибудь, не меньшего мегабайт двухсот, и в столбце "Авторасширение" установить чего-нибудь, не меньшее мегабайт пятидесяти, на самом деле оба значения можно сделать сильно больше, если база соотв. сильно большая,,, к слову, можете выдать на обозрение текущий размер файлов данных и файлов лога).
После этого логи уменьшатся до минимально возможного размера, и автоматически обрезать их Вам просто не понадобится.
Если же у базы модель восстановления - простая, и при этом лог вырос, значит, была такая транзакция, которой это понадобилось, и возможно, будет ещё, и уменьшать лог в этом случае может быть и нецелесообразно.
Но если Вы настаиваете :-) , то смотрите, как написал коллега в (2), но в поле команда оставьте только:
USE ИмяБазы
DBCC SHRINKFILE (ИмяФайлаЛога, ЖелаемыйРазмерВМегабайтах);
, и далее по тексту - создадите расписание, по кот. задание будет выполняться, и тупо обрезать лог. Повторюсь, что в случае с простой моделью это возможно лучше и не делать.
Подскажите, плиз, как на MS SQL Server 2008 R2 настроить автоматическую обрезку лога?
Я понимаю, поиск нынче не в моде, поэтому даю ссылку. Вот хорошая статья на тему, в ней есть не только примеры "как", но и объяснение "почему". Букв конечно много, но есть и картинки ;).
П.С.: Рекомендую к прочтению и всем тем, кто советует сменить режим восстановления на простой или предлагает шринковать.
Запускаем: SQL Server Management Studio В дереве разворачиваем: Agent SQL Server\Задания
Добавляем новое задание:
На вкладке общие указываем имя задание (как вам нравится)
Далее переходим в шаги
Добавляем новый шаг (внизу кнопка создать)
Указываем имя шага (любое)
Тип: Скрипт Transact-SQL (T-SQL)
в поле команда вставляете следующий код:
USE ИмяБазы ALT ER DATABASE ИмяБазы SET RECOVERY SIMPLE
DBCC SHRINKFILE (ИмяФайлаЛога, ЖелаемыйРазмерВМегабайтах);
ALT ER DATABASE ИмяБазы SET RECOVERY FULL
Далее на вкладке расписания создаем расписание когда должно выполнятся это задание
Жмем кнопку "ОК", все готово
После создания задания можно проверить как это работает:
На созданной задании кликнуть ПКМ и выбрать "Запустить задание на шаге ..."
Там же можно просмотреть журнал выполнения задания