Очистить Transaction log MSSQL 2000/2005

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Очистить Transaction log MSSQL 2000/2005

Сообщение vg »

Как сделать скриптом?
Скучно attach/deattach руками.

Спасибо.
ir
Житель
Сообщения: 876
Зарегистрирован: 19 июл 2004, 23:36
Откуда: Ванкувер

Сообщение ir »

если это речь идет именно про transaction log, то
backup ... transaction log ... with INIT (с этой опцией очищает), а with NOINIT - не очищает.
а "attach/deattach" - это вообще из другой оперы :dunno:
Yuri Dimant
Пользователь
Сообщения: 107
Зарегистрирован: 02 авг 2004, 22:00

MSSQL2005

Сообщение Yuri Dimant »

Уважаемый vg, поясните что значит очистить? Вы хотите уменьшить физическии размер фаила или очистить "virtual logs" дать возможность SQL Server reuse эти логи?

1) BACKUP LOG and then run DBCC SHRINKFILE command
2) BACKUP LOG do that on regular period

Вообщето я невижу надобности в шринковании фаила потому что он все равно будет расти а эта операзия (частыи рост фаила) очень дорогая ( in terms of performance)
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Re: MSSQL2005

Сообщение vg »

Yuri Dimant писал(а):Уважаемый vg, поясните что значит очистить? Вы хотите уменьшить физическии размер фаила или очистить "virtual logs" дать возможность SQL Server reuse эти логи?

1) BACKUP LOG and then run DBCC SHRINKFILE command
2) BACKUP LOG do that on regular period

Вообщето я невижу надобности в шринковании фаила потому что он все равно будет расти а эта операзия (частыи рост фаила) очень дорогая ( in terms of performance)
Каждый день мы начинаем с новым (чистым) преалокированным логом 30 G. Чтобы это сделать выполняется утомительные операции:
- Удаляется "старый", 30G, (вчерашний) лог.
- Создаётся новый лог преалокированный до 30G.
Созданный лог - чистый (он не содержит записей о транзакциях).
Старый лог не нужен по завершению дня по ряду причин.
Вот это надо автоматизировать.
Yuri Dimant
Пользователь
Сообщения: 107
Зарегистрирован: 02 авг 2004, 22:00

Сообщение Yuri Dimant »

Ok, ir has answered the question
BACKUP LOG.... WITH INIT
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Yuri Dimant писал(а):Ok, ir has answered the question
BACKUP LOG.... WITH INIT
Похоже. Проверю, доложу.
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

лог бакапить надо.... рекомендую следующий подход...

1. полный бакап базы каждые выходные.
2. дифферениальные бакапы каждый вечер.
3. бакап лога кождые 30 минут.

при этом подходе смотрите с помощью dbcc sqlperf(logspace) насколько сильно он заполняется в течении дня и в зависимости от этого выставляйте максимальный размер один раз. удачи!
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

папа Карло писал(а):лог бакапить надо.... рекомендую следующий подход...

1. полный бакап базы каждые выходные.
2. дифферениальные бакапы каждый вечер.
3. бакап лога кождые 30 минут.

при этом подходе смотрите с помощью dbcc sqlperf(logspace) насколько сильно он заполняется в течении дня и в зависимости от этого выставляйте максимальный размер один раз. удачи!
Бекапим каждый день (полный бекап). Пока за ночь успевает. Кроме того, есть у нас другие (думаю более эффекивные для нас) логи. "День" надо начинать с чистого листа. Отсюда и задача.

Может кому интересно:

Для MSSQL 2005 (пробовал только на одном сервере) BACKUP LOG.... WITH INIT не катит. Если выполнить эту команду, то dbcc sqlperf(logspace) показывает тоже значение. Лог не ощищается. Получается очистить, если выполнить:
- BACKUP LOG.... WITH INIT, NO_LOG
- DBCC SHRINKFILE( log_name, actual_size+1, TRUNCATEONLY)
Без последней команды не работает. При этом размер лога остаётся прежним.

Для MSSQL2000 достаточно выполнить BACKUP LOG.... WITH NO_LOG (INIT вгоняет MS в непонятки). SHRINKFILE выполнять не надо.

Спасибо всем.
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

если ты шринкаешь транзакционный лог, то у тебя неправльный подход к управлению базой. прочитай про транзакционный лог, рековери мождели и как его надо майнтейнить. при бакапе лога в нем "осводождается место" под новые транзакции.
Ответить