SQL server 2008R2 Журнал транзакций для базы данных "MGR" заполнен из-за "ACTIVE_TRANSACTION"
Я запустил запрос, в котором я хотел обновить более 130 миллионов записей. Через несколько часов я получил ошибку:
Журнал транзакций для базы данных "MGR" заполнен из-за "ACTIVE_TRANSACTION".
Теперь у меня на диске C 70 МБ.
Я полагаю, что проблема была в небольшом дисковом пространстве, и поэтому запрос не удался, но как мне теперь восстановить потерянное дисковое пространство до запроса?
Я использую SQL Server 2008 R2
Спасибо за любые подсказки
1 ответ
Проблема связана с тем, как sql регистрирует все изменения во время активной транзакции. Пока транзакция активна, журнал не может быть очищен, поэтому, если у вас есть огромная активная транзакция, журнал продолжает расти, пока не достигнет точки, где он может превысить свою емкость. Объем ведения журнала зависит от многих факторов: режим восстановления (режим полного восстановления - это тот, который генерирует больше активности ведения журнала). Кроме того, вы можете разбить транзакцию на небольшие порции, чтобы включить очистку журнала между ними. Также посмотрите на табличный совет TABLOCK. Потерянный объем диска, возможно, попал в файл журнала. Проверь это.