2014-09-15 3 views
0

Я запускаю запрос, в котором я хотел обновить более 130 миллионов записей. Через несколько часов я получил ошибку:SQL server 2008R2 Журнал транзакций для базы данных «MGR» заполнен из-за «ACTIVE_TRANSACTION»

Журнал транзакций для базы данных «MGR» заполнен из-за «ACTIVE_TRANSACTION».

сейчас у меня есть 70 МБ свободного места на моем диске С.

Я полагаю, что проблема была связана с небольшим пространством на диске, и поэтому запрос был неудачным, но как я могу восстановить потерянное пространство диска перед запросом?

Im с помощью SQL Server 2008 R2

Спасибо за любые подсказки

+1

[DBA.StackExchange] (http://dba.stackexchange.com) - это немного лучше, чтобы спросить что-то вроде этого. Вот ссылка для начала работы: http://technet.microsoft.com/en-us/library/ms178037(v=sql.105).aspx – Pred

ответ

1

Проблема связана с тем, как SQL регистрирует все изменения во время активной транзакции. Пока транзакция активна, журнал не может быть сброшен, поэтому, если у вас есть огромная активная транзакция, журнал продолжает расти до тех пор, пока он не достигнет точки, где она может превысить ее емкость. Объем регистрации зависит от многих факторов: режима восстановления (режим полного восстановления - тот, который генерирует больше активности регистрации). Кроме того, вы можете разбить транзакцию в небольших кусках, чтобы включить сбой в работе журнала. Также загляните в таблицу TABLOCK. Возможно, потерянный объем диска попал в файл журнала. Проверь это.