Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Рост transaction log  [new]
bulat_v
Member

Откуда:
Сообщений: 4
Есть хранимая процедура, которая предназначена для периодической очистки базы от служебных и удаленных записей. Процедура состоит из последовательности запросов типа delete from <table_name>:

CREATE procedure usp_truncate_db @err int output, @date datetime
as
begin
delete from tb__user_actions where [date] < @date
….
delete from tb_organizations where deleted <> 0 and [date] < @date
End
Go

В таблицах десятки тысяч записей. Размер log-файла перед запуском процедуры – 1 Мб (БД после сжатия). В процессе работы этой хр.проц. я вижу (с помощью sp_helpdb), что log-файл растет и достигает размера 3,8 Гб. Далее выдается сообщение

The log file for database 'from_pap_150305' is full. Back up the transaction log for the database to free up some log space.

Почему растет log и как этого избежать?
21 мар 05, 18:16    [1403220]     Ответить | Цитировать Сообщить модератору
 Re: Рост transaction log  [new]
Glory
Member

Откуда:
Сообщений: 104760
Почему растет log и как этого избежать?
Лог растет потому что он и предназначен для хранения информации о происходящих транзакциях (на всякий случай - при delete возникает транзакция)

Запретить транзакции нельзя.
Можно уменьшить их размер, уменьшив объем затрагиваемых запросом данных. Т.е. удалять в нашем случае данные порциями.
А завершенные транзакции в зависимости от recovery model базы удаляются либо автоматочески либо с помощью архивирования.

Сжатие журанал транзакций освещено в ТОП10
21 мар 05, 18:25    [1403250]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить