14 дек. 2009 г.

MSSQL и урезание лога транзакций

StarTeam, который мы используем для контроля за версиями исходников Гедымина, хранит данные в базе MSSQL. Каждые два года лог транзакций MSSQL начинает резко увеличиваться в размерах, пожирая все свободное пространство на диске. Решить эту проблему изнутри StarTeam невозможно. Каждые два года приходится лазить по компьютерным форумам в поисках магической последовательности команд:

isql -S (local)\STARTEAM -U GEDEMIN
1> backup log GEDEMIN with NO_LOG
2> go
1> backup log GEDEMIN with TRUNCATE_ONLY
2> go
1> DBCC SHRINKDATABASE(GEDEMIN)
2> go
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Как выяснилось, именно гигантский (в десятки Гб) лог и был причиной того, что сервис StarTeam перестал стартовать при запуске ОС. Очевидно, не успевал проверить свой лог в отведенное время и винда его просто срубала раньше времени.

То ли дело Firebird -- ни логов транзакций, ни проблем с ними связанных...

2 комментария:

Unknown комментирует...

Можно один раз выставить модель восстановления (Recovery Model) для базы данных в Simple и тогда при каждом бэкапе лог файл будет автоматически обрезаться. Вы же делаете бэкапы;)

Andrei комментирует...

Честно говоря не знаком с MSSQL на столько детально. Бэкапы сейчас делаются остановкой сервисов и полным копированием всех нужных каталогов.

Рост логов происходит не часто -- 3 раза за 8 лет. Но зато, когда происходит, то нарастают они очень быстро, со скоростью 1-2 Гб ежедневно. В какой момент начинается рост, с чем это связано я так и не смог выяснить.

Отправить комментарий