У меня есть длительный процесс, который держит транзакцию открытой в течение всего времени.
Я не контролирую, как это выполняется.
Поскольку транзакция остается открытой в течение всего времени, при заполнении журнала транзакций SQL Server не может увеличить размер файла журнала.
Таким образом, процесс завершается ошибкой "The transaction log for database 'xxx' is full"
.
Я попытался предотвратить это, увеличив размер файла журнала транзакций в свойствах базы данных, но получаю ту же ошибку.
Не уверен, что мне делать дальше. Процесс длится несколько часов, так что играть методом проб и ошибок непросто.
Любые идеи?
Если кому интересно, процесс - это импорт организации в Microsoft Dynamics CRM 4.0.
На диске достаточно места, у нас есть журнал в простом режиме ведения журнала, и мы сделали резервную копию журнала перед тем, как начать процесс.
- = - = - = - = - ОБНОВЛЕНИЕ - = - = - = - = -
Спасибо всем за комментарии. Вот что заставило меня поверить, что журнал не будет расти из-за открытой транзакции:
Я получаю следующую ошибку ...
Import Organization (Name=xxx, Id=560d04e7-98ed-e211-9759-0050569d6d39) failed with Exception:
System.Data.SqlClient.SqlException: The transaction log for database 'xxx' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases
Итак, следуя этому совету, я пошел к " log_reuse_wait_desc column in sys.databases
" и он имел ценность ACTIVE_TRANSACTION
".
Согласно Microsoft: http://msdn.microsoft.com/en-us/library/ms345414(v=sql.105).aspx
Это означает следующее:
Транзакция активна (все модели восстановления). • В начале резервного копирования журнала может существовать длительная транзакция. В этом случае для освобождения места может потребоваться еще одна резервная копия журнала. Дополнительные сведения см. В разделе «Длительные активные транзакции» далее в этом разделе.
• Транзакция отложена (только для SQL Server 2005 Enterprise Edition и более поздних версий). Отложенная транзакция фактически является активной транзакцией, откат которой заблокирован из-за недоступности ресурса. Для получения информации о причинах отложенных транзакций и о том, как вывести их из отложенного состояния, см. Отложенные транзакции.
Я что-то неправильно понял?
- = - = - = - ОБНОВЛЕНИЕ 2 - = - = - = -
Просто начал процесс с начальным размером файла журнала 30 ГБ. Это займет пару часов.
- = - = - = - Окончательное ОБНОВЛЕНИЕ - = - = - = -
На самом деле проблема была вызвана тем, что файл журнала занимал все доступное дисковое пространство. В последней попытке я освободил 120 ГБ, и он все еще использовал их и в конечном итоге потерпел неудачу.
Раньше я не понимал, что это происходило, потому что, когда процесс выполнялся в ночное время, он откатывался в случае сбоя. На этот раз мне удалось проверить размер файла журнала перед откатом.
Спасибо всем за ваш вклад.